dns: add custom timeout.

This commit is contained in:
Christopher Jeffrey 2017-07-07 01:20:38 -07:00
parent 7d9d3f979d
commit 647b6909c6
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -31,7 +31,7 @@ exports.resolve = function resolve(host, proxy) {
return socks.resolve(proxy, host); return socks.resolve(proxy, host);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
dns.resolve(host, 'A', (err, result) => { dns.resolve(host, 'A', to((err, result) => {
if (err) { if (err) {
reject(err); reject(err);
return; return;
@ -43,7 +43,7 @@ exports.resolve = function resolve(host, proxy) {
} }
resolve(result); resolve(result);
}); }));
}); });
}; };
@ -61,7 +61,7 @@ exports.lookup = function lookup(host, proxy) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let addrs = []; let addrs = [];
dns.lookup(host, options, (err, result) => { dns.lookup(host, options, to((err, result) => {
if (err) { if (err) {
reject(err); reject(err);
return; return;
@ -76,6 +76,24 @@ exports.lookup = function lookup(host, proxy) {
addrs.push(addr.address); addrs.push(addr.address);
resolve(addrs); resolve(addrs);
}); }));
}); });
}; };
/*
* Helpers
*/
function to(callback) {
let timeout = setTimeout(() => {
callback(new Error('DNS request timed out.'));
callback = null;
}, 5000);
return function(err, result) {
if (callback) {
clearTimeout(timeout);
callback(err, result);
}
};
}