Revert the change of network interfaces family from string to integer#43054
Closed
aduh95 wants to merge 5 commits intonodejs:mainfrom
Closed
Revert the change of network interfaces family from string to integer#43054aduh95 wants to merge 5 commits intonodejs:mainfrom
aduh95 wants to merge 5 commits intonodejs:mainfrom
Conversation
Collaborator
|
Review requested:
|
Member
|
IMO the revert doesn't make sense if it is semver-major, because everyone will have to adapt to the change for v18 (which is going to be LTS). |
Member
|
+1 to land it on Node v18. |
Member
|
We actually had quorum at the end of the meeting, we approve landing this as semver-minor. |
RaisinTen
approved these changes
May 11, 2022
Member
|
Is it okay if we remove this from the tsc-agenda now, since everyone in the meeting was +1 with reverting? |
This comment was marked as outdated.
This comment was marked as outdated.
BethGriggs
approved these changes
May 11, 2022
Collaborator
Collaborator
Collaborator
15 tasks
Member
|
We discussed in the TSC meeting and there were no objections to this landing. Doing that now. |
mhdawson
pushed a commit
that referenced
this pull request
Jun 15, 2022
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>
Member
|
Landed as 70b516e |
Merged
danielleadams
pushed a commit
that referenced
this pull request
Jun 16, 2022
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
Jun 16, 2022
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
Jun 16, 2022
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
Jun 16, 2022
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
1 task
9 tasks
nrako
added a commit
to nrako/deno
that referenced
this pull request
Nov 30, 2025
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
Nov 30, 2025
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
Nov 30, 2025
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
Nov 30, 2025
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
Nov 30, 2025
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
Nov 30, 2025
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
Dec 4, 2025
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
Dec 6, 2025
## 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This reverts commits 68fb0bf, 4ad342a, and 3a26db9.
Fixes: #43014