From c6deb107b89c4afe8620fda8f80eba59d0c8f70c Mon Sep 17 00:00:00 2001 From: skenqbx Date: Mon, 9 Mar 2015 20:58:48 +0100 Subject: [PATCH 1/2] test: add test for https agent servername option --- test/parallel/test-https-agent-servername.js | 40 ++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/parallel/test-https-agent-servername.js diff --git a/test/parallel/test-https-agent-servername.js b/test/parallel/test-https-agent-servername.js new file mode 100644 index 00000000000000..1647b0ee9a6ae8 --- /dev/null +++ b/test/parallel/test-https-agent-servername.js @@ -0,0 +1,40 @@ +var common = require('../common'); +var assert = require('assert'); + +if (!common.hasCrypto) { + console.log('1..0 # Skipped: missing crypto'); + process.exit(); +} + +var https = require('https'); +var fs = require('fs'); + +var options = { + key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'), + cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem'), + ca: fs.readFileSync(common.fixturesDir + '/keys/ca1-cert.pem') +}; + + +var server = https.Server(options, function(req, res) { + res.writeHead(200); + res.end('hello world\n'); +}); + + +server.listen(common.PORT, function() { + https.get({ + path: '/', + port: common.PORT, + rejectUnauthorized: true, + servername: 'agent1', + ca: options.ca + }, function(res) { + res.resume(); + console.log(res.statusCode); + server.close(); + }).on('error', function(e) { + console.log(e.message); + process.exit(1); + }); +}); From 5bce6f03055149e39098a0947a613aaa5f0061b3 Mon Sep 17 00:00:00 2001 From: skenqbx Date: Mon, 9 Mar 2015 21:00:24 +0100 Subject: [PATCH 2/2] https: don't overwrite servername option --- lib/_http_agent.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/_http_agent.js b/lib/_http_agent.js index 4917e220473844..c6bc8298d0b4b6 100644 --- a/lib/_http_agent.js +++ b/lib/_http_agent.js @@ -160,11 +160,13 @@ Agent.prototype.createSocket = function(req, options) { options = util._extend({}, options); options = util._extend(options, self.options); - options.servername = options.host; - if (req) { - var hostHeader = req.getHeader('host'); - if (hostHeader) { - options.servername = hostHeader.replace(/:.*$/, ''); + if (!options.servername) { + options.servername = options.host; + if (req) { + var hostHeader = req.getHeader('host'); + if (hostHeader) { + options.servername = hostHeader.replace(/:.*$/, ''); + } } }