diff --git a/lib/websocket.js b/lib/websocket.js index 070b3a0eb..e17d6c1a7 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -668,7 +668,11 @@ function netConnect(options) { */ function tlsConnect(options) { options.path = undefined; - options.servername = options.servername || options.host; + + if (!options.servername && options.servername !== '') { + options.servername = options.host; + } + return tls.connect(options); } diff --git a/test/websocket.test.js b/test/websocket.test.js index 90ff96124..647550216 100644 --- a/test/websocket.test.js +++ b/test/websocket.test.js @@ -6,6 +6,7 @@ const assert = require('assert'); const crypto = require('crypto'); const https = require('https'); const http = require('http'); +const tls = require('tls'); const fs = require('fs'); const { URL } = require('url'); @@ -2040,6 +2041,18 @@ describe('WebSocket', () => { }); }); }).timeout(4000); + + it('allows to disable sending the SNI extension', (done) => { + const original = tls.connect; + + tls.connect = (options) => { + assert.strictEqual(options.servername, ''); + tls.connect = original; + done(); + }; + + const ws = new WebSocket('wss://127.0.0.1', { servername: '' }); + }); }); describe('Request headers', () => {