ip: fix parseHost for ipv6.

This commit is contained in:
Christopher Jeffrey 2016-12-19 00:43:42 -08:00
parent 9d8f95ee0f
commit 1836d8b314
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -24,15 +24,25 @@ exports.parseHost = function parseHost(addr, fallback) {
var parts, host, version;
assert(typeof addr === 'string');
assert(addr.length > 0);
assert(typeof port === 'number');
assert(addr.length > 0, 'Bad address.');
// [ipv6]:port
if (addr[0] === '[') {
addr = addr.substring(1);
parts = addr.split(/\]:?/);
assert(parts.length === 2);
assert(parts.length === 2, 'Bad IPv6 address.');
} else {
parts = addr.split(':');
if (parts.length > 2) {
// ipv6 - no port
assert(IP.isV6Format(addr), 'Bad IPv6 address.');
parts = [addr];
} else {
// domain/ipv4:port?
assert(parts.length <= 2, 'Bad host.');
}
}
host = parts[0];