From df81c9f6b3f74f4dc55810f6fdb39b0c75fef168 Mon Sep 17 00:00:00 2001 From: Sanghyeok Lee Date: Wed, 21 Jun 2017 02:40:57 +0900 Subject: [PATCH 1/3] Add IPv6 support --- README.md | 1 + lib/ConnectionStringParser.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index a12765e..6e9e85c 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ $ npm install node-zookeeper-client ```javascript var zookeeper = require('node-zookeeper-client'); +// ipv6 : zookeeper.createClient('[2001:db8:65:6c61:622e:6b72:010:3214]:4322') var client = zookeeper.createClient('localhost:2181'); var path = process.argv[2]; diff --git a/lib/ConnectionStringParser.js b/lib/ConnectionStringParser.js index 4e068df..a2ac095 100644 --- a/lib/ConnectionStringParser.js +++ b/lib/ConnectionStringParser.js @@ -60,6 +60,17 @@ function ConnectionStringParser(connectionString) { }).forEach(function (item) { var parts = item.split(':'); + if(parts.length > 2) { // IPv6 (RFC 3986) - [2001:db8:65:6c61:622e:6b72:010:3214]:4322 + // not use endsWith (ECMAScript 6) + var ip_end_index = item.lastIndexOf(']'); + parts = [item.substring(1, ip_end_index)]; + + // use port number + if(ip_end_index != (item.length - 1)) { + parts.push(item.substring(item.lastIndexOf(':') + 1)); + } + } + servers.push({ host : parts[0], port : parts[1] || DEFAULT_PORT From b4c877edc7611f21c1520252a3a4228c7bd3f303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=83=81=ED=98=81=28Sanghyeok=20Lee=29?= Date: Fri, 30 Jun 2017 11:16:46 +0900 Subject: [PATCH 2/3] Add IPv6 support (fix lint error) --- lib/ConnectionStringParser.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ConnectionStringParser.js b/lib/ConnectionStringParser.js index a2ac095..82df141 100644 --- a/lib/ConnectionStringParser.js +++ b/lib/ConnectionStringParser.js @@ -59,14 +59,14 @@ function ConnectionStringParser(connectionString) { return item; }).forEach(function (item) { var parts = item.split(':'); + var ipEndIndex = item.lastIndexOf(']'); - if(parts.length > 2) { // IPv6 (RFC 3986) - [2001:db8:65:6c61:622e:6b72:010:3214]:4322 + if (parts.length > 2 && ipEndIndex != -1) { // IPv6 (RFC 3986) // not use endsWith (ECMAScript 6) - var ip_end_index = item.lastIndexOf(']'); - parts = [item.substring(1, ip_end_index)]; + parts = [item.substring(1, ipEndIndex)]; // use port number - if(ip_end_index != (item.length - 1)) { + if (ipEndIndex !== (item.length - 1)) { parts.push(item.substring(item.lastIndexOf(':') + 1)); } } From dd518e2f4174bf8e9a4ce9fb2e941d8668aa4211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=83=81=ED=98=81=28Sanghyeok=20Lee=29?= Date: Fri, 30 Jun 2017 11:17:19 +0900 Subject: [PATCH 3/3] Add IPv6 support (fix lint error) --- lib/ConnectionStringParser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ConnectionStringParser.js b/lib/ConnectionStringParser.js index 82df141..1c95afc 100644 --- a/lib/ConnectionStringParser.js +++ b/lib/ConnectionStringParser.js @@ -61,7 +61,7 @@ function ConnectionStringParser(connectionString) { var parts = item.split(':'); var ipEndIndex = item.lastIndexOf(']'); - if (parts.length > 2 && ipEndIndex != -1) { // IPv6 (RFC 3986) + if (parts.length > 2 && ipEndIndex !== -1) { // IPv6 (RFC 3986) // not use endsWith (ECMAScript 6) parts = [item.substring(1, ipEndIndex)];