summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2024-10-30 02:41:16 +0900
committerGitHub <noreply@github.com>2024-10-29 18:41:16 +0100
commita69224ea5bd02f08108aac867c492754095f2d34 (patch)
tree253aad351353b0ff8f3e3fb57785a8de41aadcdf /ext
parent51978a76540cac72dd35528dd023c3fc6d5eeca6 (diff)
Revert "fix(ext/node): fix dns.lookup result ordering (#26264)" (#26621)
This reverts commit d59599fc187c559ee231882773e1c5a2b932fc3d. Closes #26588
Diffstat (limited to 'ext')
-rw-r--r--ext/node/polyfills/http.ts6
-rw-r--r--ext/node/polyfills/internal/dns/utils.ts14
-rw-r--r--ext/node/polyfills/internal_binding/cares_wrap.ts13
-rw-r--r--ext/node/polyfills/net.ts24
4 files changed, 35 insertions, 22 deletions
diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts
index e7a860ff1..e8a189f70 100644
--- a/ext/node/polyfills/http.ts
+++ b/ext/node/polyfills/http.ts
@@ -51,7 +51,6 @@ import { urlToHttpOptions } from "ext:deno_node/internal/url.ts";
import { kEmptyObject } from "ext:deno_node/internal/util.mjs";
import { constants, TCP } from "ext:deno_node/internal_binding/tcp_wrap.ts";
import { notImplemented, warnNotImplemented } from "ext:deno_node/_utils.ts";
-import { isWindows } from "ext:deno_node/_util/os.ts";
import {
connResetException,
ERR_HTTP_HEADERS_SENT,
@@ -1712,8 +1711,9 @@ export class ServerImpl extends EventEmitter {
port = options.port | 0;
}
- // Use 0.0.0.0 for Windows, and [::] for other platforms.
- let hostname = options.host ?? (isWindows ? "0.0.0.0" : "[::]");
+ // TODO(bnoordhuis) Node prefers [::] when host is omitted,
+ // we on the other hand default to 0.0.0.0.
+ let hostname = options.host ?? "0.0.0.0";
if (hostname == "localhost") {
hostname = "127.0.0.1";
}
diff --git a/ext/node/polyfills/internal/dns/utils.ts b/ext/node/polyfills/internal/dns/utils.ts
index 1e0c3d9ed..226fce93d 100644
--- a/ext/node/polyfills/internal/dns/utils.ts
+++ b/ext/node/polyfills/internal/dns/utils.ts
@@ -416,10 +416,20 @@ export function emitInvalidHostnameWarning(hostname: string) {
);
}
-let dnsOrder = getOptionValue("--dns-result-order") || "verbatim";
+let dnsOrder = getOptionValue("--dns-result-order") || "ipv4first";
export function getDefaultVerbatim() {
- return dnsOrder !== "ipv4first";
+ switch (dnsOrder) {
+ case "verbatim": {
+ return true;
+ }
+ case "ipv4first": {
+ return false;
+ }
+ default: {
+ return false;
+ }
+ }
}
/**
diff --git a/ext/node/polyfills/internal_binding/cares_wrap.ts b/ext/node/polyfills/internal_binding/cares_wrap.ts
index cbfea40b2..6feb7faf0 100644
--- a/ext/node/polyfills/internal_binding/cares_wrap.ts
+++ b/ext/node/polyfills/internal_binding/cares_wrap.ts
@@ -75,18 +75,11 @@ export function getaddrinfo(
const recordTypes: ("A" | "AAAA")[] = [];
- if (family === 6) {
- recordTypes.push("AAAA");
- } else if (family === 4) {
+ if (family === 0 || family === 4) {
recordTypes.push("A");
- } else if (family === 0 && hostname === "localhost") {
- // Ipv6 is preferred over Ipv4 for localhost
+ }
+ if (family === 0 || family === 6) {
recordTypes.push("AAAA");
- recordTypes.push("A");
- } else if (family === 0) {
- // Only get Ipv4 addresses for the other hostnames
- // This simulates what `getaddrinfo` does when the family is not specified
- recordTypes.push("A");
}
(async () => {
diff --git a/ext/node/polyfills/net.ts b/ext/node/polyfills/net.ts
index 35d273be9..48e1d0de8 100644
--- a/ext/node/polyfills/net.ts
+++ b/ext/node/polyfills/net.ts
@@ -1871,13 +1871,23 @@ function _setupListenHandle(
// Try to bind to the unspecified IPv6 address, see if IPv6 is available
if (!address && typeof fd !== "number") {
- if (isWindows) {
- address = DEFAULT_IPV4_ADDR;
- addressType = 4;
- } else {
- address = DEFAULT_IPV6_ADDR;
- addressType = 6;
- }
+ // TODO(@bartlomieju): differs from Node which tries to bind to IPv6 first
+ // when no address is provided.
+ //
+ // Forcing IPv4 as a workaround for Deno not aligning with Node on
+ // implicit binding on Windows.
+ //
+ // REF: https://github.com/denoland/deno/issues/10762
+ // rval = _createServerHandle(DEFAULT_IPV6_ADDR, port, 6, fd, flags);
+
+ // if (typeof rval === "number") {
+ // rval = null;
+ address = DEFAULT_IPV4_ADDR;
+ addressType = 4;
+ // } else {
+ // address = DEFAULT_IPV6_ADDR;
+ // addressType = 6;
+ // }
}
if (rval === null) {