mirror of https://github.com/lukechilds/node.git
Browse Source
This commit adds support for custom DNS lookup functions in dgram sockets. This is similar to the existing feature in net sockets. Refs: https://github.com/nodejs/node/issues/6189 PR-URL: https://github.com/nodejs/node/pull/14560 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Wyatt Preul <wpreul@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>v6
cjihrig
8 years ago
3 changed files with 86 additions and 31 deletions
@ -0,0 +1,47 @@ |
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const dgram = require('dgram'); |
|||
const dns = require('dns'); |
|||
|
|||
{ |
|||
// Verify that the provided lookup function is called.
|
|||
const lookup = common.mustCall((host, family, callback) => { |
|||
dns.lookup(host, family, callback); |
|||
}); |
|||
|
|||
const socket = dgram.createSocket({ type: 'udp4', lookup }); |
|||
|
|||
socket.bind(common.mustCall(() => { |
|||
socket.close(); |
|||
})); |
|||
} |
|||
|
|||
{ |
|||
// Verify that lookup defaults to dns.lookup().
|
|||
const originalLookup = dns.lookup; |
|||
|
|||
dns.lookup = common.mustCall((host, family, callback) => { |
|||
dns.lookup = originalLookup; |
|||
originalLookup(host, family, callback); |
|||
}); |
|||
|
|||
const socket = dgram.createSocket({ type: 'udp4' }); |
|||
|
|||
socket.bind(common.mustCall(() => { |
|||
socket.close(); |
|||
})); |
|||
} |
|||
|
|||
{ |
|||
// Verify that non-functions throw.
|
|||
[null, true, false, 0, 1, NaN, '', 'foo', {}, Symbol()].forEach((value) => { |
|||
assert.throws(() => { |
|||
dgram.createSocket({ type: 'udp4', lookup: value }); |
|||
}, common.expectsError({ |
|||
code: 'ERR_INVALID_ARG_TYPE', |
|||
type: TypeError, |
|||
message: 'The "lookup" argument must be of type function' |
|||
})); |
|||
}); |
|||
} |
Loading…
Reference in new issue