From acab1f487bfaca026715c19cb2816c0cc1e60f7f Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Sat, 17 Sep 2016 19:18:09 +0100 Subject: [PATCH] Problem: zmq_connect with IPv6 "source:port;dest:port" format is broken Solution: allow for '[' character when doing the basic sanity check on the TCP endpoint. Also add unit tests for both IPv4 and IPv6 source;dest format. --- src/socket_base.cpp | 2 +- tests/test_reqrep_tcp.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 9d34d7ea..8ef8176a 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -610,7 +610,7 @@ int zmq::socket_base_t::connect (const char *addr_) while (isalnum (*check) || isxdigit (*check) || *check == '.' || *check == '-' || *check == ':'|| *check == ';' - || *check == ']') + || *check == '[' || *check == ']') check++; } // Assume the worst, now look for success diff --git a/tests/test_reqrep_tcp.cpp b/tests/test_reqrep_tcp.cpp index ecdf2537..7baca689 100644 --- a/tests/test_reqrep_tcp.cpp +++ b/tests/test_reqrep_tcp.cpp @@ -88,7 +88,7 @@ void test_multi_connect_ipv4 (void) assert (rc == 0); rc = zmq_connect (sc, "tcp://127.0.0.1:5561"); assert (rc == 0); - rc = zmq_connect (sc, "tcp://127.0.0.1:5562"); + rc = zmq_connect (sc, "tcp://127.0.0.1:5564;127.0.0.1:5562"); assert (rc == 0); bounce (sb0, sc); @@ -101,7 +101,7 @@ void test_multi_connect_ipv4 (void) rc = zmq_disconnect (sc, "tcp://127.0.0.1:5560"); assert (rc == 0); - rc = zmq_disconnect (sc, "tcp://127.0.0.1:5562"); + rc = zmq_disconnect (sc, "tcp://127.0.0.1:5564;127.0.0.1:5562"); assert (rc == 0); rc = zmq_disconnect (sc, "tcp://127.0.0.1:5561"); assert (rc == 0); @@ -214,7 +214,7 @@ void test_multi_connect_ipv6 (void) assert (rc == 0); rc = zmq_connect (sc, "tcp://[::1]:5561"); assert (rc == 0); - rc = zmq_connect (sc, "tcp://[::1]:5562"); + rc = zmq_connect (sc, "tcp://[::1]:5564;[::1]:5562"); assert (rc == 0); bounce (sb0, sc); @@ -227,7 +227,7 @@ void test_multi_connect_ipv6 (void) rc = zmq_disconnect (sc, "tcp://[::1]:5560"); assert (rc == 0); - rc = zmq_disconnect (sc, "tcp://[::1]:5562"); + rc = zmq_disconnect (sc, "tcp://[::1]:5564;[::1]:5562"); assert (rc == 0); rc = zmq_disconnect (sc, "tcp://[::1]:5561"); assert (rc == 0);