From 98e9de7db930e505884ca8d0ca6588afbe43f127 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Fri, 19 Apr 2019 15:51:24 -0400 Subject: http: `servername === false` should disable SNI There is no way to disable SNI extension when sending a request to HTTPS server. Setting `options.servername` to a falsy value would make Node.js core override it with either hostname or ip address. This change introduces a way to disable SNI completely if this is required for user's application. Setting `options.servername` to `` in `https.request` would disable overrides and thus disable the extension. PR-URL: https://github.com/nodejs/node/pull/27316 Reviewed-By: Steven R Loomis Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater Reviewed-By: Anatoli Papirovski Reviewed-By: Ben Noordhuis Reviewed-By: Rich Trott Reviewed-By: Sam Roberts Reviewed-By: Trivikram Kamat --- lib/_http_agent.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/_http_agent.js') diff --git a/lib/_http_agent.js b/lib/_http_agent.js index 32dbf27abc..eb98f2b0bd 100644 --- a/lib/_http_agent.js +++ b/lib/_http_agent.js @@ -151,7 +151,7 @@ Agent.prototype.addRequest = function addRequest(req, options, port/* legacy */, if (options.socketPath) options.path = options.socketPath; - if (!options.servername) + if (!options.servername && options.servername !== '') options.servername = calculateServerName(options, req); const name = this.getName(options); @@ -198,7 +198,7 @@ Agent.prototype.createSocket = function createSocket(req, options, cb) { if (options.socketPath) options.path = options.socketPath; - if (!options.servername) + if (!options.servername && options.servername !== '') options.servername = calculateServerName(options, req); const name = this.getName(options); -- cgit v1.2.3