Permalink
Browse files

[refactor] Manage our own internal list of Agent instances

  • Loading branch information...
1 parent a1cdf00 commit 887c5808c90b7128c040e510e237ddb4d034fe3e @indexzero indexzero committed May 25, 2011
Showing with 22 additions and 7 deletions.
  1. +22 −7 lib/node-http-proxy.js
View
@@ -37,6 +37,11 @@ var util = require('util'),
exports.version = [0, 5, 7];
//
+// Track our own list of agents internal to `node-http-proxy`
+//
+var _agents = {};
+
+//
// ### function _getAgent (host, port, secure)
// #### @host {string} Host of the agent to get
// #### @port {number} Port of the agent to get
@@ -45,13 +50,23 @@ exports.version = [0, 5, 7];
// and sets the `maxSockets` property appropriately.
//
function _getAgent (host, port, secure) {
- var agent = !secure ? http.getAgent(host, port) : https.getAgent({
- host: host,
- port: port
- });
-
- agent.maxSockets = maxSockets;
- return agent;
+ var Agent, id = [host, port].join(':');
+
+ if (!port) {
+ port = secure ? 443 : 80;
+ }
+
+ if (!_agents[id]) {
+ Agent = secure ? https.Agent : http.Agent;
+
+ _agents[id] = new Agent({
+ host: host,
+ port: port,
+ maxSockets: maxSockets
+ });
+ }
+
+ return _agents[id];
}
//

0 comments on commit 887c580

Please sign in to comment.