diff --git a/src/tcp_address.cpp b/src/tcp_address.cpp index e9b2b3e3..ef8b7954 100644 --- a/src/tcp_address.cpp +++ b/src/tcp_address.cpp @@ -413,6 +413,11 @@ int zmq::tcp_address_t::resolve (const char *name_, bool local_, bool ipv6_, boo std::string addr_str (name_, delimiter - name_); std::string port_str (delimiter + 1); + // Remove square brackets around the address, if any, as used in IPv6 + if (addr_str.size () >= 2 && addr_str [0] == '[' && + addr_str [addr_str.size () - 1] == ']') + addr_str = addr_str.substr (1, addr_str.size () - 2); + // Allow 0 specifically, to detect invalid port error in atoi if not uint16_t port; if (port_str == "*" || port_str == "0")