From ffdb1d58a8a4ddcdd3ebefb78b4e9bf1b3753821 Mon Sep 17 00:00:00 2001 From: avwo Date: Sun, 26 Jul 2015 03:12:01 +0800 Subject: [PATCH] avoid throw out error --- lib/https/index.js | 2 +- lib/index.js | 12 +++++------- lib/inspectors/res.js | 2 +- lib/util/{connect.js => connect-http.js} | 0 lib/util/index.js | 4 ++-- 5 files changed, 9 insertions(+), 11 deletions(-) rename lib/util/{connect.js => connect-http.js} (100%) diff --git a/lib/https/index.js b/lib/https/index.js index f24fe7cf8..e999f2a9e 100644 --- a/lib/https/index.js +++ b/lib/https/index.js @@ -81,7 +81,7 @@ function handleWebsocket(socket, wss, callback) { if (util.isLocalAddress(ip) && (!options.port || options.port == config.port)) { return execCallback(new Error('Unable to agent to itself (' + ip + ':' + config.port + ')')); } - util.connectProxy({ + util.connect({ isSocks: isSocks, host: ip, port: options.port, diff --git a/lib/index.js b/lib/index.js index 1e95a3f33..3806f9ffd 100644 --- a/lib/index.js +++ b/lib/index.js @@ -54,7 +54,7 @@ function tunnelProxy(server, proxy) { parseUrl(_tunnelUrl, config.port); var opts = url.parse(tunnelUrl); - util.connectProxy({ + util.connect({ isSocks: isSocks, host: ip, port: options.port, @@ -168,11 +168,6 @@ function tunnelProxy(server, proxy) { return server; } -function avoidThrowOutError(socket) { - socket.removeListener('error', util.noop); - socket.on('error', util.noop); -} - function proxy(conf) { if (conf) { ['port', 'sockets', 'days', 'timeout', @@ -238,7 +233,10 @@ function proxy(conf) { } function createAgent(agentConfig, https) { - return new (require(https ? 'https' : 'http').Agent)(agentConfig).on('free', avoidThrowOutError); + return new (require(https ? 'https' : 'http').Agent)(agentConfig).on('free', function (socket) { + socket.removeListener('error', util.noop); + socket.on('error', util.noop); + }); } function exportInterfaces(obj) { diff --git a/lib/inspectors/res.js b/lib/inspectors/res.js index e32fb4dae..dc94782c2 100644 --- a/lib/inspectors/res.js +++ b/lib/inspectors/res.js @@ -59,7 +59,7 @@ module.exports = function(req, res, next) { proxyOptions.host = ip; var isSocks = proxyOptions.protocol == 'socks:'; if (isSocks || isHttps) { - util.connectProxy({ + util.connect({ isSocks: isSocks, host: ip, port: proxyOptions.port, diff --git a/lib/util/connect.js b/lib/util/connect-http.js similarity index 100% rename from lib/util/connect.js rename to lib/util/connect-http.js diff --git a/lib/util/index.js b/lib/util/index.js index 4dd3edcbd..e88b19295 100644 --- a/lib/util/index.js +++ b/lib/util/index.js @@ -14,9 +14,9 @@ var config = require('../../package.json'); var now = Date.now(); exports.WhistleTransform = require('./whistle-transform'); -exports.connect = require('./connect'); +exports.connectHttp = require('./connect-http'); exports.connectSocks = require('./connect-socks'); -exports.connectProxy = function(options, callback) { +exports.connect = function(options, callback) { return exports[options.isSocks ? 'connectSocks' : 'connect'](options, callback); }; exports.parseReq = require('./parse-req');