Browse Source

net: bind to `::` TCP address by default

Try binding TCP socket to `::` first before falling back to
`0.0.0.0`.
v0.11.13-release
Fedor Indutny 11 years ago
parent
commit
2272052461
  1. 18
      lib/net.js

18
lib/net.js

@ -1083,8 +1083,16 @@ var createServerHandle = exports._createServerHandle =
} }
if (address || port) { if (address || port) {
debug('bind to ' + address); debug('bind to ' + (address || 'anycast'));
if (addressType === 6) { if (!address) {
// Try binding to ipv6 first
err = handle.bind6('::', port);
if (err) {
handle.close();
// Fallback to ipv4
return createServerHandle('0.0.0.0', port);
}
} else if (addressType === 6) {
err = handle.bind6(address, port); err = handle.bind6(address, port);
} else { } else {
err = handle.bind(address, port); err = handle.bind(address, port);
@ -1214,7 +1222,7 @@ Server.prototype.listen = function() {
if (arguments.length == 0 || util.isFunction(arguments[0])) { if (arguments.length == 0 || util.isFunction(arguments[0])) {
// Bind to a random port. // Bind to a random port.
listen(self, '0.0.0.0', 0, null, backlog); listen(self, null, 0, null, backlog);
} else if (arguments[0] && util.isObject(arguments[0])) { } else if (arguments[0] && util.isObject(arguments[0])) {
var h = arguments[0]; var h = arguments[0];
@ -1240,7 +1248,7 @@ Server.prototype.listen = function() {
util.isFunction(arguments[1]) || util.isFunction(arguments[1]) ||
util.isNumber(arguments[1])) { util.isNumber(arguments[1])) {
// The first argument is the port, no IP given. // The first argument is the port, no IP given.
listen(self, '0.0.0.0', port, 4, backlog); listen(self, null, port, 4, backlog);
} else { } else {
// The first argument is the port, the second an IP. // The first argument is the port, the second an IP.
@ -1248,7 +1256,7 @@ Server.prototype.listen = function() {
if (err) { if (err) {
self.emit('error', err); self.emit('error', err);
} else { } else {
listen(self, ip || '0.0.0.0', port, ip ? addressType : 4, backlog); listen(self, ip, port, ip ? addressType : 4, backlog);
} }
}); });
} }

Loading…
Cancel
Save