tangerine 1.5.8 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +7 -10
- package/package.json +1 -2
package/index.js
CHANGED
|
@@ -14,7 +14,6 @@ const ipaddr = require('ipaddr.js');
|
|
|
14
14
|
const isStream = require('is-stream');
|
|
15
15
|
const mergeOptions = require('merge-options');
|
|
16
16
|
const pMap = require('p-map');
|
|
17
|
-
const pTimeout = require('p-timeout');
|
|
18
17
|
const pWaitFor = require('p-wait-for');
|
|
19
18
|
const packet = require('dns-packet');
|
|
20
19
|
const semver = require('semver');
|
|
@@ -109,8 +108,6 @@ class Tangerine extends dns.promises.Resolver {
|
|
|
109
108
|
let err;
|
|
110
109
|
if (errors.length === 1) {
|
|
111
110
|
err = errors[0];
|
|
112
|
-
} else if (errors.every((e) => e instanceof pTimeout.TimeoutError)) {
|
|
113
|
-
err = errors[0];
|
|
114
111
|
} else {
|
|
115
112
|
err = new Error(
|
|
116
113
|
[...new Set(errors.map((e) => e.message).filter(Boolean))].join('; ')
|
|
@@ -1043,7 +1040,7 @@ class Tangerine extends dns.promises.Resolver {
|
|
|
1043
1040
|
//
|
|
1044
1041
|
async #request(pkt, server, abortController, timeout = this.options.timeout) {
|
|
1045
1042
|
// safeguard in case aborted
|
|
1046
|
-
|
|
1043
|
+
abortController?.signal?.throwIfAborted();
|
|
1047
1044
|
|
|
1048
1045
|
let localAddress;
|
|
1049
1046
|
let localPort;
|
|
@@ -1067,15 +1064,17 @@ class Tangerine extends dns.promises.Resolver {
|
|
|
1067
1064
|
// <https://github.com/hildjj/dohdec/blob/43564118c40f2127af871bdb4d40f615409d4b9c/pkg/dohdec/lib/doh.js#L117-L120>
|
|
1068
1065
|
if (this.options.requestOptions.method.toLowerCase() === 'get') {
|
|
1069
1066
|
if (!dohdec) await pWaitFor(() => Boolean(dohdec));
|
|
1067
|
+
// safeguard in case aborted
|
|
1068
|
+
abortController?.signal?.throwIfAborted();
|
|
1070
1069
|
url += `?dns=${dohdec.DNSoverHTTPS.base64urlEncode(pkt)}`;
|
|
1071
1070
|
} else {
|
|
1072
1071
|
options.body = pkt;
|
|
1073
1072
|
}
|
|
1074
1073
|
|
|
1075
1074
|
debug('request', { url, options });
|
|
1076
|
-
const
|
|
1077
|
-
|
|
1078
|
-
|
|
1075
|
+
const t = setTimeout(() => abortController.abort(), timeout);
|
|
1076
|
+
const response = await this.request(url, options);
|
|
1077
|
+
clearTimeout(t);
|
|
1079
1078
|
return response;
|
|
1080
1079
|
}
|
|
1081
1080
|
|
|
@@ -1237,9 +1236,7 @@ class Tangerine extends dns.promises.Resolver {
|
|
|
1237
1236
|
const err = this.constructor.createError(
|
|
1238
1237
|
name,
|
|
1239
1238
|
rrtype,
|
|
1240
|
-
_err
|
|
1241
|
-
? dns.TIMEOUT
|
|
1242
|
-
: _err.code,
|
|
1239
|
+
_err.code,
|
|
1243
1240
|
_err.errno
|
|
1244
1241
|
);
|
|
1245
1242
|
// then map it to dns.CONNREFUSED
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tangerine",
|
|
3
3
|
"description": "Tangerine is the best Node.js drop-in replacement for dns.promises.Resolver using DNS over HTTPS (\"DoH\") via undici with built-in retries, timeouts, smart server rotation, AbortControllers, and caching support for multiple backends (with TTL and purge support).",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.9",
|
|
5
5
|
"author": "Forward Email (https://forwardemail.net)",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/forwardemail/nodejs-dns-over-https-tangerine/issues"
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
"is-stream": "2.0.1",
|
|
21
21
|
"merge-options": "3.0.4",
|
|
22
22
|
"p-map": "4",
|
|
23
|
-
"p-timeout": "4",
|
|
24
23
|
"p-wait-for": "3",
|
|
25
24
|
"port-numbers": "6.0.1",
|
|
26
25
|
"private-ip": "^3.0.2",
|