|
|
@ -52,56 +52,28 @@ exports.createServer = function(opts, requestListener) { |
|
|
|
|
|
|
|
|
|
|
|
// HTTPS agents.
|
|
|
|
var agents = {}; |
|
|
|
|
|
|
|
function Agent(options) { |
|
|
|
http.Agent.call(this, options); |
|
|
|
this.createConnection = function(port, host) { |
|
|
|
return tls.connect(port, host, options); |
|
|
|
}; |
|
|
|
} |
|
|
|
inherits(Agent, http.Agent); |
|
|
|
|
|
|
|
|
|
|
|
Agent.prototype.defaultPort = 443; |
|
|
|
|
|
|
|
var globalAgent = new Agent(); |
|
|
|
|
|
|
|
Agent.prototype._getConnection = function(options, cb) { |
|
|
|
if (NPN_ENABLED && !this.options.NPNProtocols) { |
|
|
|
this.options.NPNProtocols = ['http/1.1', 'http/1.0']; |
|
|
|
} |
|
|
|
|
|
|
|
var s = tls.connect(options.port, options.host, this.options, function() { |
|
|
|
// do other checks here?
|
|
|
|
if (cb) cb(); |
|
|
|
}); |
|
|
|
|
|
|
|
return s; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
function getAgent(options) { |
|
|
|
if (!options.port) options.port = 443; |
|
|
|
|
|
|
|
var id = options.host + ':' + options.port; |
|
|
|
var agent = agents[id]; |
|
|
|
|
|
|
|
if (!agent) { |
|
|
|
agent = agents[id] = new Agent(options); |
|
|
|
} |
|
|
|
|
|
|
|
return agent; |
|
|
|
} |
|
|
|
exports.getAgent = getAgent; |
|
|
|
exports.globalAgent = globalAgent; |
|
|
|
exports.Agent = Agent; |
|
|
|
|
|
|
|
exports.request = function(options, cb) { |
|
|
|
if (options.agent === undefined) { |
|
|
|
options.agent = getAgent(options); |
|
|
|
} else if (options.agent === false) { |
|
|
|
options.agent = new Agent(options); |
|
|
|
options.agent = globalAgent; |
|
|
|
} |
|
|
|
return http._requestFromAgent(options, cb); |
|
|
|
return http.request(options, cb); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
exports.get = function(options, cb) { |
|
|
|
options.method = 'GET'; |
|
|
|
var req = exports.request(options, cb); |
|
|
|