summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vtcp_connecter.cpp28
-rw-r--r--src/vtcp_listener.cpp16
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);