net,dgram: add ipv6Only option for net and dgram#23798
net,dgram: add ipv6Only option for net and dgram#23798oyyd wants to merge 1 commit intonodejs:masterfrom
Conversation
doc/api/net.md
Outdated
There was a problem hiding this comment.
Nit:
| `0.0.0.0` be bound. **Default:** `false` | |
| `0.0.0.0` be bound. **Default:** `false`. |
doc/api/net.md
Outdated
There was a problem hiding this comment.
Nit:
| **Default:** `false` | |
| **Default:** `false`. |
doc/api/net.md
Outdated
There was a problem hiding this comment.
minor nit: perhaps this should be camel case (ipv6Only)?
There was a problem hiding this comment.
Though I prefer ipv6only here, it's better to follow camel case :)
There was a problem hiding this comment.
| // This test ensures that dual-stack suuport is disabled when | |
| // This test ensures that dual-stack support is disabled when |
291bb1d to
91e21b2
Compare
There was a problem hiding this comment.
This looks wrong. Boolean(flags | constants.UV_TCP_IPV6ONLY) is always true. Did you mean to use &?
There was a problem hiding this comment.
Yes, a terrible mistake. I'm going to update it and add a test of falsy ipv6Only scenario.
lib/net.js
Outdated
There was a problem hiding this comment.
The default value of ipv6Only would be actually undefined rather than false which is how its document described. This is the only reason I set the default argument.
|
PTAL. (Travis ci task for this halted..) |
|
Thanks for doing this. Would you mind als contributing the same option to UDP / dgram? |
|
Yes, that's possible. But the last discussion #17664 (comment) shows there is no need to provide the same option to dgram. How do you think about this now? |
doc/api/net.md
Outdated
There was a problem hiding this comment.
Just "disable dual-stack support", no "the." (And you'd normally say "binding to host", not "binding host".)
There was a problem hiding this comment.
Did you mean to write WORKER_COUNT? The name's a bit confusing to me.
There was a problem hiding this comment.
I should have been more careful.
There was a problem hiding this comment.
It's unnecessary to wrap the Countdown callback in a mustCall(). That's done automatically.
|
I think I misunderstood the comment #17664 (comment). We could bind to and use unspecified address and it works as expected: exampleconst dgram = require('dgram');
const socket = dgram.createSocket('udp6');
socket.on('message', (msg, rinfo) => {
console.log('rinfo', rinfo)
});
socket.bind(0, '::', () => {
const { port } = socket.address();
const client = dgram.createSocket('udp4');
// Ensure the `client` won't bind ipv6.
client.bind(0, () => {
client.send(Buffer.allocUnsafe(1), port, '0.0.0.0');
});
});So I would like to add the option to dgram too. |
|
|
I'd say still go for it. Even if the OS might not properly support the socket option, we can still expose it. |
There was a problem hiding this comment.
nit: don't need the common.mustCall() wrapper here.
There was a problem hiding this comment.
nit: don't need the common.mustCall() wrapper here.
|
/ping @silverwind @vsemozhetbyt @mscdex @richardlau @jasnell It should look good now. PTAL. |
|
Docs LGTM. |
|
I have no idea why this happened though. |
|
@nodejs/platform-aix ^^^^^^ |
|
I suggest removing the support for |
Will you be doing that and rebasing? If not, should we apply a |
|
I will remove the |
For TCP servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in `net.Server.listen()` and `dgram.createSocket()` methods which allows to disable dual-stack support. Support for cluster module is also provided in this commit. Fixes: nodejs#17664
|
Resume (for known issues): https://ci.nodejs.org/job/node-test-commit-arm-fanned/4499/ |
|
I have removed the support for /cc @bnoordhuis @jasnell Does this still LGTY? |
|
Yes, still LGTM |
|
Landed in 33a25b2. Thanks! |
For TCP servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in `net.Server.listen()` and `dgram.createSocket()` methods which allows to disable dual-stack support. Support for cluster module is also provided in this commit. Fixes: #17664 PR-URL: #23798 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
For TCP servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in `net.Server.listen()` and `dgram.createSocket()` methods which allows to disable dual-stack support. Support for cluster module is also provided in this commit. Fixes: #17664 PR-URL: #23798 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
For TCP servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in `net.Server.listen()` and `dgram.createSocket()` methods which allows to disable dual-stack support. Support for cluster module is also provided in this commit. Fixes: #17664 PR-URL: #23798 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
Notable Changes:
* console,util:
* `console` functions now handle symbols as defined in the spec.
#23708
* The inspection `depth` default is now back at 2.
#24326
* dgram,net:
* Added ipv6Only option for `net` and `dgram`.
#23798
* http:
* Chosing between the http parser is now possible per runtime flag.
#24739
* readline:
* The `readline` module now supports async iterators.
#23916
* repl:
* The multiline history feature is removed.
#24804
* tls:
* Added min/max protocol version options.
#24405
* The X.509 public key info now includes the RSA bit size and the
elliptic curve. #24358
* url:
* `pathToFileURL()` now supports LF, CR and TAB.
#23720
* Windows:
* Tools are not installed using Boxstarter anymore.
#24677
* The install-tools scripts or now included in the dist.
#24233
* Added new collaborator:
* [antsmartian](https://github.com/antsmartian) - Anto Aravinth.
#24655
PR-URL: #24854
Notable Changes:
* console,util:
* `console` functions now handle symbols as defined in the spec.
#23708
* The inspection `depth` default is now back at 2.
#24326
* dgram,net:
* Added ipv6Only option for `net` and `dgram`.
#23798
* http:
* Chosing between the http parser is now possible per runtime flag.
#24739
* readline:
* The `readline` module now supports async iterators.
#23916
* repl:
* The multiline history feature is removed.
#24804
* tls:
* Added min/max protocol version options.
#24405
* The X.509 public key info now includes the RSA bit size and the
elliptic curve. #24358
* url:
* `pathToFileURL()` now supports LF, CR and TAB.
#23720
* Windows:
* Tools are not installed using Boxstarter anymore.
#24677
* The install-tools scripts or now included in the dist.
#24233
* Added new collaborator:
* [antsmartian](https://github.com/antsmartian) - Anto Aravinth.
#24655
PR-URL: #24854
Notable Changes:
* console,util:
* `console` functions now handle symbols as defined in the spec.
#23708
* The inspection `depth` default is now back at 2.
#24326
* dgram,net:
* Added ipv6Only option for `net` and `dgram`.
#23798
* http:
* Chosing between the http parser is now possible per runtime flag.
#24739
* readline:
* The `readline` module now supports async iterators.
#23916
* repl:
* The multiline history feature is removed.
#24804
* tls:
* Added min/max protocol version options.
#24405
* The X.509 public key info now includes the RSA bit size and the
elliptic curve. #24358
* url:
* `pathToFileURL()` now supports LF, CR and TAB.
#23720
* Windows:
* Tools are not installed using Boxstarter anymore.
#24677
* The install-tools scripts or now included in the dist.
#24233
* Added new collaborator:
* [antsmartian](https://github.com/antsmartian) - Anto Aravinth.
#24655
PR-URL: #24854
For TCP servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in `net.Server.listen()` and `dgram.createSocket()` methods which allows to disable dual-stack support. Support for cluster module is also provided in this commit. Fixes: nodejs#17664 PR-URL: nodejs#23798 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
Notable Changes:
* console,util:
* `console` functions now handle symbols as defined in the spec.
nodejs#23708
* The inspection `depth` default is now back at 2.
nodejs#24326
* dgram,net:
* Added ipv6Only option for `net` and `dgram`.
nodejs#23798
* http:
* Chosing between the http parser is now possible per runtime flag.
nodejs#24739
* readline:
* The `readline` module now supports async iterators.
nodejs#23916
* repl:
* The multiline history feature is removed.
nodejs#24804
* tls:
* Added min/max protocol version options.
nodejs#24405
* The X.509 public key info now includes the RSA bit size and the
elliptic curve. nodejs#24358
* url:
* `pathToFileURL()` now supports LF, CR and TAB.
nodejs#23720
* Windows:
* Tools are not installed using Boxstarter anymore.
nodejs#24677
* The install-tools scripts or now included in the dist.
nodejs#24233
* Added new collaborator:
* [antsmartian](https://github.com/antsmartian) - Anto Aravinth.
nodejs#24655
PR-URL: nodejs#24854
For our servers, the dual-stack support is enable by default, i.e. binding host "::" will also make "0.0.0.0" bound. This commit add ipv6Only option in
net.Server.listen(),net.Socket.connect()anddgram.createSocket()methods which allows to disable dual-stack support.Support for cluster module is also provided in this commit.
Fixes: #17664
/cc @silverwind
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes