dns: verify argument is valid function in resolve

Don't use argument as callback if it's not a valid callback function.
Throw a valid exception instead explaining the issue.

Adds to #7070 ("DNS — Throw meaningful error(s)").
This commit is contained in:
Kenan Sulayman 2014-02-07 18:18:27 +01:00 committed by Fedor Indutny
parent e3ec2f7dab
commit abe4c34c86
2 changed files with 13 additions and 1 deletions

View File

@ -185,9 +185,11 @@ exports.resolve = function(hostname, type_, callback_) {
if (util.isString(type_)) {
resolver = resolveMap[type_];
callback = callback_;
} else {
} else if (util.isFunction(type_)) {
resolver = exports.resolve4;
callback = type_;
} else {
throw new Error('Type must be a string');
}
if (util.isFunction(resolver)) {

View File

@ -60,3 +60,13 @@ assert.deepEqual(dns.getServers(), portsExpected);
assert.doesNotThrow(function () { dns.setServers([]); });
assert.deepEqual(dns.getServers(), []);
assert.throws(
function() {
dns.resolve('test.com', [], new Function);
},
function(err) {
return !(err instanceof TypeError);
},
"Unexpected error"
);