From 1836d8b31461f5b8aa4c0d2deba467228ceb7e69 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Mon, 19 Dec 2016 00:43:42 -0800 Subject: [PATCH] ip: fix parseHost for ipv6. --- lib/utils/ip.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/utils/ip.js b/lib/utils/ip.js index 2d0d79f9..b758d397 100644 --- a/lib/utils/ip.js +++ b/lib/utils/ip.js @@ -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];