★ wanayoo — archive 1999 https://github.com/nodejs/node/commit/8495a788c6Nouvelle recherche | Portail wanayoo
Skip to content
Permalink
Browse files

tls: renegotiate should take care of its own state

In the initial version of this test there were two zero-length writes to
force tls state to cycle. The second is not necessary, at least not now,
but the first was. The renegotiate() API should ensure that packet
exchange takes place, not its users, so move the zero-length write into
tls.

See: #14239
See: b1909d3

PR-URL: #25997
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information...
sam-github authored and addaleax committed Feb 7, 2019
1 parent 5198297 commit 8495a788c68d16b57a0baefbb3f4d9a85ccb632a
Showing with 3 additions and 2 deletions.
  1. +3 −0 lib/_tls_wrap.js
  2. +0 −2 test/parallel/test-tls-disable-renegotiation.js
@@ -613,6 +613,9 @@ TLSSocket.prototype.renegotiate = function(options, callback) {
this._requestCert = requestCert;
this._rejectUnauthorized = rejectUnauthorized;
}
// Ensure that we'll cycle through internal openssl's state
this.write('');

if (!this._handle.renegotiate()) {
if (callback) {
process.nextTick(callback, new ERR_TLS_RENEGOTIATE());
@@ -46,7 +46,6 @@ server.listen(0, common.mustCall(() => {
port
};
const client = tls.connect(options, common.mustCall(() => {
client.write('');
// Negotiation is still permitted for this first
// attempt. This should succeed.
let ok = client.renegotiate(options, common.mustCall((err) => {
@@ -56,7 +55,6 @@ server.listen(0, common.mustCall(() => {
// data event on the server. After that data
// is received, disableRenegotiation is called.
client.write('data', common.mustCall(() => {
client.write('');
// This second renegotiation attempt should fail
// and the callback should never be invoked. The
// server will simply drop the connection after

0 comments on commit 8495a78

Please sign in to comment.
You can’t perform that action at this time.