https: fix ssl socket leak when keepalive is used

SSL sockets leak whenever keep alive is enabled, ca option is set in
the global agent, and requests are sent without the ca property.
In the following case at Agent.prototype.createSocket a socket will
be created with a hashtag name that includes data from the global
agents’ ca property.

On subsequent requests at Agent.prototype.addRequest we do not find
the free socket, because the hashtag name generated there does not
take into account the global agents’ ca property, thus creating a new
socket and leaving the first socket to timeout. closes: #5699

PR-URL: https://github.com/nodejs/node/pull/5713
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
pull/2314/head
Alexander Penev 2016-03-14 17:56:02 +02:00 committed by Benjamin Gruenbaum
parent 9eb0ef4c2c
commit 2e1ae3ead1
1 changed files with 3 additions and 0 deletions

View File

@ -115,6 +115,9 @@ Agent.prototype.addRequest = function(req, options) {
};
}
options = util._extend({}, options);
options = util._extend(options, this.options);
var name = this.getName(options);
if (!this.sockets[name]) {
this.sockets[name] = [];