From 2ab36093e6187f402e85686890355763eba64817 Mon Sep 17 00:00:00 2001 From: Dirceu Pereira Tiegs Date: Wed, 10 Feb 2016 22:59:25 -0200 Subject: [PATCH] http: use `localAddress` instead of `path` Fix `options` usage on `lib/_http_agent.js` for the Legacy API. Fixes: https://github.com/nodejs/node/issues/5051 PR-URL: https://github.com/nodejs/node/pull/5190 Reviewed-By: Ben Noordhuis Reviewed-By: Brian White Reviewed-By: James M Snell --- lib/_http_agent.js | 4 ++-- test/parallel/test-regress-GH-5051.js | 31 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/parallel/test-regress-GH-5051.js diff --git a/lib/_http_agent.js b/lib/_http_agent.js index fd74daafec..2a5c33b551 100644 --- a/lib/_http_agent.js +++ b/lib/_http_agent.js @@ -106,12 +106,12 @@ Agent.prototype.getName = function(options) { }; Agent.prototype.addRequest = function(req, options) { - // Legacy API: addRequest(req, host, port, path) + // Legacy API: addRequest(req, host, port, localAddress) if (typeof options === 'string') { options = { host: options, port: arguments[2], - path: arguments[3] + localAddress: arguments[3] }; } diff --git a/test/parallel/test-regress-GH-5051.js b/test/parallel/test-regress-GH-5051.js new file mode 100644 index 0000000000..a86d0943d3 --- /dev/null +++ b/test/parallel/test-regress-GH-5051.js @@ -0,0 +1,31 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const agent = require('http').globalAgent; + +// small stub just so we can call addRequest directly +const req = { + getHeader: function() {} +}; + +agent.maxSockets = 0; + +// localAddress is used when naming requests / sockets +// while using the Legacy API +agent.addRequest(req, 'localhost', common.PORT, '127.0.0.1'); +assert.equal(Object.keys(agent.requests).length, 1); +assert.equal( + Object.keys(agent.requests)[0], + 'localhost:' + common.PORT + ':127.0.0.1'); + +// path is *not* used when naming requests / sockets +agent.addRequest(req, { + host: 'localhost', + port: common.PORT, + localAddress: '127.0.0.1', + path: '/foo' +}); +assert.equal(Object.keys(agent.requests).length, 1); +assert.equal( + Object.keys(agent.requests)[0], + 'localhost:' + common.PORT + ':127.0.0.1');