-
-
Notifications
You must be signed in to change notification settings - Fork 34.1k
Revert the change of network interfaces family from string to integer #43054
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Review requested:
|
|
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). |
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
|
+1 to land it on Node v18. |
|
We actually had quorum at the end of the meeting, we approve landing this as semver-minor. |
|
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.
Trott
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rubber stamp
|
We discussed in the TSC meeting and there were no objections to this landing. Doing that now. |
Refs: #43014 PR-URL: #43054 Fixes: #43014 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Beth Griggs <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
|
Landed as 70b516e |
Refs: #43014 PR-URL: #43054 Fixes: #43014 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Beth Griggs <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
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
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
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
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
## 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 <[email protected]> Co-authored-by: Daniel Rahmanto <[email protected]>
This reverts commits 68fb0bf, 4ad342a, and 3a26db9.
Fixes: #43014