mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
33a25b29a4
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: https://github.com/nodejs/node/issues/17664 PR-URL: https://github.com/nodejs/node/pull/23798 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
34 lines
706 B
JavaScript
34 lines
706 B
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
if (!common.hasIPv6)
|
|
common.skip('no IPv6 support');
|
|
|
|
const dgram = require('dgram');
|
|
|
|
// This test ensures that dual-stack support is disabled when
|
|
// we specify the `ipv6Only` option in `dgram.createSocket()`.
|
|
const socket = dgram.createSocket({
|
|
type: 'udp6',
|
|
ipv6Only: true,
|
|
});
|
|
|
|
socket.bind({
|
|
port: 0,
|
|
address: '::',
|
|
}, common.mustCall(() => {
|
|
const { port } = socket.address();
|
|
const client = dgram.createSocket('udp4');
|
|
|
|
// We can still bind to '0.0.0.0'.
|
|
client.bind({
|
|
port,
|
|
address: '0.0.0.0',
|
|
}, common.mustCall(() => {
|
|
client.close();
|
|
socket.close();
|
|
}));
|
|
|
|
client.on('error', common.mustNotCall());
|
|
}));
|