diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vtcp_connecter.cpp | 28 | ||||
-rw-r--r-- | src/vtcp_listener.cpp | 16 |
2 files changed, 30 insertions, 14 deletions
diff --git a/src/vtcp_connecter.cpp b/src/vtcp_connecter.cpp index 842aa3a..5c72044 100644 --- a/src/vtcp_connecter.cpp +++ b/src/vtcp_connecter.cpp @@ -83,15 +83,27 @@ int zmq::vtcp_connecter_t::set_address (const char *addr_) { const char *delimiter = strrchr (addr_, '.'); if (!delimiter) { - errno = EINVAL; - return -1; + delimiter = strrchr (addr_, ':'); + if (!delimiter) { + errno = EINVAL; + return -1; + } + std::string addr_str (addr_, delimiter - addr_); + addr_str += ":9220"; + std::string subport_str (delimiter + 1); + subport = (vtcp_subport_t) atoi (subport_str.c_str ()); + int rc = resolve_ip_hostname (&addr, &addr_len, addr_str.c_str ()); + if (rc != 0) + return -1; + } + else { + std::string addr_str (addr_, delimiter - addr_); + std::string subport_str (delimiter + 1); + subport = (vtcp_subport_t) atoi (subport_str.c_str ()); + int rc = resolve_ip_hostname (&addr, &addr_len, addr_str.c_str ()); + if (rc != 0) + return -1; } - std::string addr_str (addr_, delimiter - addr_); - std::string subport_str (delimiter + 1); - subport = (vtcp_subport_t) atoi (subport_str.c_str ()); - int rc = resolve_ip_hostname (&addr, &addr_len, addr_str.c_str ()); - if (rc != 0) - return -1; return 0; } diff --git a/src/vtcp_listener.cpp b/src/vtcp_listener.cpp index 93d9e69..685b992 100644 --- a/src/vtcp_listener.cpp +++ b/src/vtcp_listener.cpp @@ -59,15 +59,19 @@ int zmq::vtcp_listener_t::set_address (const char *addr_) } // Parse port and subport. + uint16_t port; + uint32_t subport; const char *delimiter = strrchr (addr_, '.'); if (!delimiter) { - errno = EINVAL; - return -1; + port = 9220; + subport = (uint32_t) atoi (addr_ + 2); + } + else { + std::string port_str (addr_ + 2, delimiter - addr_ - 2); + std::string subport_str (delimiter + 1); + port = (uint16_t) atoi (port_str.c_str ()); + subport = (uint32_t) atoi (subport_str.c_str ()); } - std::string port_str (addr_ + 2, delimiter - addr_ - 2); - std::string subport_str (delimiter + 1); - uint16_t port = (uint16_t) atoi (port_str.c_str ()); - uint32_t subport = (uint32_t) atoi (subport_str.c_str ()); // Start listening. s = vtcp_bind (port, subport); |