refine code

This commit is contained in:
avwo
2015-07-26 12:06:51 +08:00
parent ef7ec19271
commit 80d68fb935
+14 -18
View File
@@ -65,19 +65,25 @@ function handleWebsocket(socket, wss, callback) {
destroy(new Error('timeout'));
});
if (proxyUrl) {
var isSocks = /^socks:\/\//.test(proxyUrl);
proxyUrl = (wss ? 'wss:' : 'ws:') + util.removeProtocol(proxyUrl);
function resolveHost(url, callback) {
rules.resolveHost(proxyUrl, function(err, ip, customHost) {
reqEmitter.customHost = customHost;
if (err) {
return execCallback(err);
}
options = url.parse(proxyUrl);
reqEmitter.customHost = customHost;
reqEmitter.host = ip;
reqEmitter.dnsTime = Date.now() - now;
reqEmitter.emit('send');
callback(ip);
}, mustRemoteHost);
}
if (proxyUrl) {
var isSocks = /^socks:\/\//.test(proxyUrl);
proxyUrl = (wss ? 'wss:' : 'ws:') + util.removeProtocol(proxyUrl);
resolveHost(proxyUrl, function(ip) {
options = url.parse(proxyUrl);
if (util.isLocalAddress(ip) && (!options.port || options.port == config.port)) {
return execCallback(new Error('Unable to agent to itself (' + ip + ':' + config.port + ')'));
}
@@ -102,8 +108,7 @@ function handleWebsocket(socket, wss, callback) {
abortIfUnavailable(reqSocket);
pipeData();
});
}, mustRemoteHost);
});
} else {
matchedUrl = util.rule.getUrl(_rules.rule);
if (/^wss?:\/\//.test(matchedUrl)) {
@@ -113,16 +118,7 @@ function handleWebsocket(socket, wss, callback) {
}
options = url.parse(fullUrl);
rules.resolveHost(fullUrl, function(err, ip, customHost) {
reqEmitter.customHost = customHost;
if (err) {
return execCallback(err);
}
reqEmitter.host = ip;
reqEmitter.dnsTime = Date.now() - now;
reqEmitter.emit('send');
resolveHost(fullUrl, function(ip) {
var isWss = options.protocol == 'wss';
reqSocket = (isWss ? tls : net).connect({
rejectUnauthorized: false,
@@ -130,7 +126,7 @@ function handleWebsocket(socket, wss, callback) {
port: options.port || (isWss ? 443 : 80)
}, pipeData);
abortIfUnavailable(reqSocket);
}, mustRemoteHost);
});
}