Revert the change of network interfaces family from string to integer by aduh95 · Pull Request #43054 · nodejs/node
added
c++
labels
aduh95
added
semver-major
labels
mcollina
added
semver-major
and removed semver-major
labels
mhdawson pushed a commit that referenced this pull request
Refs: #43014 PR-URL: #43054 Fixes: #43014 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Beth Griggs <bgriggs@redhat.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
danielleadams pushed a commit that referenced this pull request
Refs: #43014 PR-URL: #43054 Fixes: #43014 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Beth Griggs <bgriggs@redhat.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
danielleadams added a commit that referenced this pull request
Notable changes: * crypto: * remove Node.js-specific webcrypto extensions (Filip Skokan) #43310 * add CFRG curves to Web Crypto API (Filip Skokan) #42507 * dns: * accept `'IPv4'` and `'IPv6'` for `family` (Antoine du Hamel) #43054 * report: * add more heap infos in process report (theanarkh) #43116 PR-URL: #43385
danielleadams added a commit that referenced this pull request
Notable changes: * crypto: * remove Node.js-specific webcrypto extensions (Filip Skokan) #43310 * add CFRG curves to Web Crypto API (Filip Skokan) #42507 * dns: * accept `'IPv4'` and `'IPv6'` for `family` (Antoine du Hamel) #43054 * report: * add more heap infos in process report (theanarkh) #43116 PR-URL: #43385
danielleadams added a commit that referenced this pull request
Notable changes: * crypto: * remove Node.js-specific webcrypto extensions (Filip Skokan) #43310 * add CFRG curves to Web Crypto API (Filip Skokan) #42507 * dns: * accept `'IPv4'` and `'IPv6'` for `family` (Antoine du Hamel) #43054 * report: * add more heap infos in process report (theanarkh) #43116 PR-URL: #43385
aduh95
deleted the
revert-net-family-integer
branch
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's `server.address()` with Node.js v18.4.0+ behavior by
returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due
to ecosystem breakage (nodejs/node#43014).
This fix ensures compatibility with npm packages that rely on the
string format, which has been the stable API since Node.js v18.4.0.
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako
mentioned this pull request
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's `server.address()` with Node.js v18.4.0+ behavior by
returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due
to ecosystem breakage (nodejs/node#43014).
This fix ensures compatibility with npm packages that rely on the
string format, which has been the stable API since Node.js v18.4.0.
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's `server.address()` with Node.js v18.4.0+ behavior by
returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due
to ecosystem breakage (nodejs/node#43014).
This fix ensures compatibility with npm packages that rely on the
string format, which has been the stable API since Node.js v18.4.0.
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's `server.address()` with Node.js v18.4.0+ behavior by
returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due
to ecosystem breakage (nodejs/node#43014).
This fix ensures compatibility with npm packages that rely on the
string format, which has been the stable API since Node.js v18.4.0.
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's `server.address()` with Node.js v18.4.0+ behavior by
returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due
to ecosystem breakage (nodejs/node#43014).
This fix ensures compatibility with npm packages that rely on the
string format, which has been the stable API since Node.js v18.4.0.
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's Node.js compatibility layer with Node.js v18.4.0+ behavior
by returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number in `server.address()` and socket address methods.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due to
ecosystem breakage (nodejs/node#43014).
Changes:
- `http.Server.address()`, `https.Server.address()`, `http2.Server.address()`
now include `family` property as string
- `net.Server.address()` returns string `family` via tcp_wrap.ts
- `socket.remoteFamily` returns string instead of number
- `dns.lookup()` accepts both numeric (0, 4, 6) and string ("IPv4", "IPv6")
family values, matching Node.js behavior
Family value derivation follows Node.js C++ implementation:
- isIP() === 4 → "IPv4"
- isIP() === 6 → "IPv6"
- isIP() === 0 → undefined (defensive, matches Node.js behavior for
non-IP addresses, though not practically reachable via TCP server APIs)
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
nrako added a commit to nrako/deno that referenced this pull request
Aligns Deno's Node.js compatibility layer with Node.js v18.4.0+ behavior
by returning the `family` property as a string ("IPv4" or "IPv6") rather
than a number in `server.address()` and socket address methods.
Node.js briefly changed `family` from string to number in v18.0.0
(nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due to
ecosystem breakage (nodejs/node#43014).
Changes:
- `http.Server.address()`, `https.Server.address()`, `http2.Server.address()`
now include `family` property as string
- `net.Server.address()` returns string `family` via tcp_wrap.ts
- `socket.remoteFamily` returns string instead of number
- `dns.lookup()` accepts both numeric (0, 4, 6) and string ("IPv4", "IPv6")
family values, matching Node.js behavior
Family value derivation follows Node.js C++ implementation:
- isIP() === 4 → "IPv4"
- isIP() === 6 → "IPv6"
- isIP() === 0 → undefined (defensive, matches Node.js behavior for
non-IP addresses, though not practically reachable via TCP server APIs)
Refs:
- nodejs/node#43054
- nodejs/node@70b516e
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Tango992 added a commit to denoland/deno that referenced this pull request
## Summary Aligns Deno's Node.js compatibility layer (`node:net`, `node:http`, `node:https`, `node:http2`, `node:dns`) with Node.js v18.4.0+ behavior by returning the `family` property as a string (`"IPv4"` or `"IPv6"`) rather than a number in `server.address()` and socket address methods. Node.js briefly changed `family` from string to number in v18.0.0 (nodejs/node#41431), but reverted in v18.4.0 (nodejs/node#43054) due to ecosystem breakage (nodejs/node#43014). This fix ensures compatibility with npm packages that rely on the string format, which has been the stable API since Node.js v18.4.0. ## Changes - Modified `ext/node/polyfills/http.ts` to add `family` property to `address()` return - Modified `ext/node/polyfills/internal_binding/tcp_wrap.ts` to return string `family` instead of number in `getsockname()`, `getpeername()`, and `#connect()` - Modified `ext/node/polyfills/net.ts` to fix `socket.remoteFamily` getter (no longer needs conversion since `family` is now a string) - Modified `ext/node/polyfills/dns.ts` and `ext/node/polyfills/internal/dns/promises.ts` to accept string family values (`"IPv4"`, `"IPv6"`) in `lookup()`, matching [Node.js behavior](https://nodejs.org/api/dns.html#dnslookuphostname-options-callback) - Added tests in `tests/unit_node/http_test.ts`, `tests/unit_node/http2_test.ts`, `tests/unit_node/https_test.ts`, `tests/unit_node/dns_test.ts`, and `tests/unit_node/net_test.ts` ## Node.js Compatibility Note For non-IP addresses (when `isIP()` returns 0), the `family` property is `undefined`. This matches Node.js C++ behavior in [`AddressToJS`](https://github.com/nodejs/node/blob/main/src/tcp_wrap.cc) where family is only set for `AF_INET` (`"IPv4"`) and `AF_INET6` (`"IPv6"`), and left undefined otherwise. ## Refs - nodejs/node#43054 - nodejs/node@70b516e <!-- Before submitting a PR, please read https://docs.deno.com/runtime/manual/references/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. 7. Open as a draft PR if your work is still in progress. The CI won't run all steps, but you can add '[ci]' to a commit message to force it to. 8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label. --> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Daniel Rahmanto <daniel.rahmanto@gmail.com>