Skip to content

Commit

Permalink
dns: export error code constants from dns/promises
Browse files Browse the repository at this point in the history
PR-URL: nodejs/node#43176
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
F3n67u authored and guangwong committed Oct 10, 2022
1 parent bbf14cf commit 78dbddc
Show file tree
Hide file tree
Showing 5 changed files with 168 additions and 26 deletions.
2 changes: 2 additions & 0 deletions doc/api/dns.md
Original file line number Diff line number Diff line change
Expand Up @@ -1293,6 +1293,8 @@ Each DNS query can return one of the following error codes:
* `dns.ADDRGETNETWORKPARAMS`: Could not find `GetNetworkParams` function.
* `dns.CANCELLED`: DNS query cancelled.

The above error codes are also exported by the `dnsPromises` API, e.g., `dnsPromises.NODATA`.

## Implementation considerations

Although [`dns.lookup()`][] and the various `dns.resolve*()/dns.reverse()`
Expand Down
75 changes: 51 additions & 24 deletions lib/dns.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,34 @@ const {
emitInvalidHostnameWarning,
getDefaultVerbatim,
setDefaultResultOrder,
errorCodes: dnsErrorCodes,
} = require('internal/dns/utils');
const {
NODATA,
FORMERR,
SERVFAIL,
NOTFOUND,
NOTIMP,
REFUSED,
BADQUERY,
BADNAME,
BADFAMILY,
BADRESP,
CONNREFUSED,
TIMEOUT,
EOF,
FILE,
NOMEM,
DESTRUCTION,
BADSTR,
BADFLAGS,
NONAME,
BADHINTS,
NOTINITIALIZED,
LOADIPHLPAPI,
ADDRGETNETWORKPARAMS,
CANCELLED,
} = dnsErrorCodes;
const {
ERR_INVALID_ARG_TYPE,
ERR_INVALID_ARG_VALUE,
Expand Down Expand Up @@ -352,30 +379,30 @@ module.exports = {
V4MAPPED: cares.AI_V4MAPPED,

// ERROR CODES
NODATA: 'ENODATA',
FORMERR: 'EFORMERR',
SERVFAIL: 'ESERVFAIL',
NOTFOUND: 'ENOTFOUND',
NOTIMP: 'ENOTIMP',
REFUSED: 'EREFUSED',
BADQUERY: 'EBADQUERY',
BADNAME: 'EBADNAME',
BADFAMILY: 'EBADFAMILY',
BADRESP: 'EBADRESP',
CONNREFUSED: 'ECONNREFUSED',
TIMEOUT: 'ETIMEOUT',
EOF: 'EOF',
FILE: 'EFILE',
NOMEM: 'ENOMEM',
DESTRUCTION: 'EDESTRUCTION',
BADSTR: 'EBADSTR',
BADFLAGS: 'EBADFLAGS',
NONAME: 'ENONAME',
BADHINTS: 'EBADHINTS',
NOTINITIALIZED: 'ENOTINITIALIZED',
LOADIPHLPAPI: 'ELOADIPHLPAPI',
ADDRGETNETWORKPARAMS: 'EADDRGETNETWORKPARAMS',
CANCELLED: 'ECANCELLED'
NODATA,
FORMERR,
SERVFAIL,
NOTFOUND,
NOTIMP,
REFUSED,
BADQUERY,
BADNAME,
BADFAMILY,
BADRESP,
CONNREFUSED,
TIMEOUT,
EOF,
FILE,
NOMEM,
DESTRUCTION,
BADSTR,
BADFLAGS,
NONAME,
BADHINTS,
NOTINITIALIZED,
LOADIPHLPAPI,
ADDRGETNETWORKPARAMS,
CANCELLED,
};

bindDefaultResolver(module.exports, getDefaultResolver());
Expand Down
59 changes: 58 additions & 1 deletion lib/internal/dns/promises.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,34 @@ const {
validateTries,
emitInvalidHostnameWarning,
getDefaultVerbatim,
errorCodes: dnsErrorCodes,
} = require('internal/dns/utils');
const {
NODATA,
FORMERR,
SERVFAIL,
NOTFOUND,
NOTIMP,
REFUSED,
BADQUERY,
BADNAME,
BADFAMILY,
BADRESP,
CONNREFUSED,
TIMEOUT,
EOF,
FILE,
NOMEM,
DESTRUCTION,
BADSTR,
BADFLAGS,
NONAME,
BADHINTS,
NOTINITIALIZED,
LOADIPHLPAPI,
ADDRGETNETWORKPARAMS,
CANCELLED,
} = dnsErrorCodes;
const { codes, dnsException } = require('internal/errors');
const { toASCII } = require('internal/idna');
const { isIP } = require('internal/net');
Expand Down Expand Up @@ -309,5 +336,35 @@ Resolver.prototype.resolve = function resolve(hostname, rrtype) {
};


module.exports = { lookup, lookupService, Resolver };
module.exports = {
lookup,
lookupService,
Resolver,

// ERROR CODES
NODATA,
FORMERR,
SERVFAIL,
NOTFOUND,
NOTIMP,
REFUSED,
BADQUERY,
BADNAME,
BADFAMILY,
BADRESP,
CONNREFUSED,
TIMEOUT,
EOF,
FILE,
NOMEM,
DESTRUCTION,
BADSTR,
BADFLAGS,
NONAME,
BADHINTS,
NOTINITIALIZED,
LOADIPHLPAPI,
ADDRGETNETWORKPARAMS,
CANCELLED,
};
bindDefaultResolver(module.exports, Resolver.prototype);
29 changes: 29 additions & 0 deletions lib/internal/dns/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,34 @@ function setDefaultResultOrder(value) {
dnsOrder = value;
}

// ERROR CODES
const errorCodes = {
NODATA: 'ENODATA',
FORMERR: 'EFORMERR',
SERVFAIL: 'ESERVFAIL',
NOTFOUND: 'ENOTFOUND',
NOTIMP: 'ENOTIMP',
REFUSED: 'EREFUSED',
BADQUERY: 'EBADQUERY',
BADNAME: 'EBADNAME',
BADFAMILY: 'EBADFAMILY',
BADRESP: 'EBADRESP',
CONNREFUSED: 'ECONNREFUSED',
TIMEOUT: 'ETIMEOUT',
EOF: 'EOF',
FILE: 'EFILE',
NOMEM: 'ENOMEM',
DESTRUCTION: 'EDESTRUCTION',
BADSTR: 'EBADSTR',
BADFLAGS: 'EBADFLAGS',
NONAME: 'ENONAME',
BADHINTS: 'EBADHINTS',
NOTINITIALIZED: 'ENOTINITIALIZED',
LOADIPHLPAPI: 'ELOADIPHLPAPI',
ADDRGETNETWORKPARAMS: 'EADDRGETNETWORKPARAMS',
CANCELLED: 'ECANCELLED',
};

module.exports = {
bindDefaultResolver,
getDefaultResolver,
Expand All @@ -218,4 +246,5 @@ module.exports = {
emitInvalidHostnameWarning,
getDefaultVerbatim,
setDefaultResultOrder,
errorCodes,
};
29 changes: 28 additions & 1 deletion test/parallel/test-dns-promises-exists.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,32 @@

require('../common');
const assert = require('assert');
const dnsPromises = require('dns/promises');
const dns = require('dns');

assert.strictEqual(require('dns/promises'), require('dns').promises);
assert.strictEqual(dnsPromises, dns.promises);

assert.strictEqual(dnsPromises.NODATA, dns.NODATA);
assert.strictEqual(dnsPromises.FORMERR, dns.FORMERR);
assert.strictEqual(dnsPromises.SERVFAIL, dns.SERVFAIL);
assert.strictEqual(dnsPromises.NOTFOUND, dns.NOTFOUND);
assert.strictEqual(dnsPromises.NOTIMP, dns.NOTIMP);
assert.strictEqual(dnsPromises.REFUSED, dns.REFUSED);
assert.strictEqual(dnsPromises.BADQUERY, dns.BADQUERY);
assert.strictEqual(dnsPromises.BADNAME, dns.BADNAME);
assert.strictEqual(dnsPromises.BADFAMILY, dns.BADFAMILY);
assert.strictEqual(dnsPromises.BADRESP, dns.BADRESP);
assert.strictEqual(dnsPromises.CONNREFUSED, dns.CONNREFUSED);
assert.strictEqual(dnsPromises.TIMEOUT, dns.TIMEOUT);
assert.strictEqual(dnsPromises.EOF, dns.EOF);
assert.strictEqual(dnsPromises.FILE, dns.FILE);
assert.strictEqual(dnsPromises.NOMEM, dns.NOMEM);
assert.strictEqual(dnsPromises.DESTRUCTION, dns.DESTRUCTION);
assert.strictEqual(dnsPromises.BADSTR, dns.BADSTR);
assert.strictEqual(dnsPromises.BADFLAGS, dns.BADFLAGS);
assert.strictEqual(dnsPromises.NONAME, dns.NONAME);
assert.strictEqual(dnsPromises.BADHINTS, dns.BADHINTS);
assert.strictEqual(dnsPromises.NOTINITIALIZED, dns.NOTINITIALIZED);
assert.strictEqual(dnsPromises.LOADIPHLPAPI, dns.LOADIPHLPAPI);
assert.strictEqual(dnsPromises.ADDRGETNETWORKPARAMS, dns.ADDRGETNETWORKPARAMS);
assert.strictEqual(dnsPromises.CANCELLED, dns.CANCELLED);

0 comments on commit 78dbddc

Please sign in to comment.