Github user enixon commented on a diff in the pull request: https://github.com/apache/zookeeper/pull/587#discussion_r206987004 --- Diff: src/java/main/org/apache/zookeeper/client/ConnectStringParser.java --- @@ -68,14 +69,26 @@ public ConnectStringParser(String connectString) { List<String> hostsList = split(connectString,","); for (String host : hostsList) { int port = DEFAULT_PORT; - int pidx = host.lastIndexOf(':'); - if (pidx >= 0) { - // otherwise : is at the end of the string, ignore - if (pidx < host.length() - 1) { - port = Integer.parseInt(host.substring(pidx + 1)); - } - host = host.substring(0, pidx); + if (!connectString.startsWith("[")) {//IPv4 + int pidx = host.lastIndexOf(':'); + if (pidx >= 0) { + // otherwise : is at the end of the string, ignore + if (pidx < host.length() - 1) { + port = Integer.parseInt(host.substring(pidx + 1)); + } + host = host.substring(0, pidx); + } + } else { //IPv6 --- End diff -- purely selfish request - could you add an example to this comment? something like // IPv6 e.g. [2001:db8:1::242:ac11:2]:1234. Having that on hand made reasoning about the string parsing logic much easier for me.
---