From e5e6ce6defac73f7dfc9c53e0b4bbd2f60ddcbaf Mon Sep 17 00:00:00 2001 From: Paolo Insogna Date: Fri, 26 May 2023 16:28:34 +0200 Subject: [PATCH 1/2] net: fix family autoselection SSL connection handling --- lib/_tls_wrap.js | 4 ++-- ...est-https-autoselectfamily-slow-timeout.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/parallel/test-https-autoselectfamily-slow-timeout.js diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index d5db06c4404c98..05c5a2fe65cb53 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -634,8 +634,8 @@ TLSSocket.prototype._wrapHandle = function(wrap, handle) { }; TLSSocket.prototype[kReinitializeHandle] = function reinitializeHandle(handle) { - const originalServername = this._handle.getServername(); - const originalSession = this._handle.getSession(); + const originalServername = this.ssl ? this._handle.getServername() : null; + const originalSession = this.ssl ? this._handle.getSession() : null; this.handle = this._wrapHandle(null, handle); this.ssl = this._handle; diff --git a/test/parallel/test-https-autoselectfamily-slow-timeout.js b/test/parallel/test-https-autoselectfamily-slow-timeout.js new file mode 100644 index 00000000000000..51da9461c4825c --- /dev/null +++ b/test/parallel/test-https-autoselectfamily-slow-timeout.js @@ -0,0 +1,19 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +const assert = require('assert'); +const { request } = require('https'); + +request( + 'https://nodejs.org/en', + // Purposely set this to false because we want all connection but the last to fail + { autoSelectFamily: true, autoSelectFamilyAttemptTimeout: 10 }, + (res) => { + assert.strictEqual(res.statusCode, 200); + res.resume(); + }, +).end(); From 51502162193a0a2d1b1ac6fd0c4b0a0f54148716 Mon Sep 17 00:00:00 2001 From: Paolo Insogna Date: Sun, 28 May 2023 08:29:25 +0200 Subject: [PATCH 2/2] net: move test to right location --- .../test-https-autoselectfamily-slow-timeout.js | 3 ++- .../test-http-remove-connection-header-persists-connection.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) rename test/{parallel => internet}/test-https-autoselectfamily-slow-timeout.js (82%) diff --git a/test/parallel/test-https-autoselectfamily-slow-timeout.js b/test/internet/test-https-autoselectfamily-slow-timeout.js similarity index 82% rename from test/parallel/test-https-autoselectfamily-slow-timeout.js rename to test/internet/test-https-autoselectfamily-slow-timeout.js index 51da9461c4825c..ea8f1374c01a23 100644 --- a/test/parallel/test-https-autoselectfamily-slow-timeout.js +++ b/test/internet/test-https-autoselectfamily-slow-timeout.js @@ -1,6 +1,7 @@ 'use strict'; const common = require('../common'); +const { addresses } = require('../common/internet'); if (!common.hasCrypto) common.skip('missing crypto'); @@ -9,7 +10,7 @@ const assert = require('assert'); const { request } = require('https'); request( - 'https://nodejs.org/en', + `https://${addresses.INET_HOST}/en`, // Purposely set this to false because we want all connection but the last to fail { autoSelectFamily: true, autoSelectFamilyAttemptTimeout: 10 }, (res) => { diff --git a/test/parallel/test-http-remove-connection-header-persists-connection.js b/test/parallel/test-http-remove-connection-header-persists-connection.js index 6d05874272df03..df7e39ae94375f 100644 --- a/test/parallel/test-http-remove-connection-header-persists-connection.js +++ b/test/parallel/test-http-remove-connection-header-persists-connection.js @@ -1,5 +1,5 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const net = require('net'); @@ -52,7 +52,7 @@ function makeHttp10Request(cb) { setTimeout(function() { cb(socket); - }, 10); + }, common.platformTimeout(50)); }); }