diff options
Diffstat (limited to 'ace/INET_Addr.cpp')
-rw-r--r-- | ace/INET_Addr.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/ace/INET_Addr.cpp b/ace/INET_Addr.cpp index 341863d32c4..60f1cf69802 100644 --- a/ace/INET_Addr.cpp +++ b/ace/INET_Addr.cpp @@ -126,31 +126,35 @@ ACE_INET_Addr::string_to_addr (const ASYS_TCHAR s[]) if (ip_addr == 0) // Assume it's a port number. { - if (ACE_OS::strspn (t, "1234567890") - == ACE_OS::strlen (t)) - { // port number + // Check to see if this is a port number. + if (ACE_OS::strspn (t, + "1234567890") == ACE_OS::strlen (t)) + { u_short port = (u_short) ACE_OS::atoi (t); - result = this->set (port, - ACE_UINT32 (INADDR_ANY)); + result = this->set (port, ACE_UINT32 (INADDR_ANY)); + } + // Otherwise, it's a port name. + else + { + *ip_addr++ = '\0'; // skip over ':' + + // Check to see if this is a port number. + if (ACE_OS::strspn (ip_addr, + "1234567890") == ACE_OS::strlen (ip_addr)) + { + u_short port = (u_short) ACE_OS::atoi (ip_addr); + result = this->set (port, t); + } + // Otherwise, it's a port name. + else + result = this->set (ip_addr, t); } - else // port name - result = this->set (t, - ACE_UINT32 (INADDR_ANY)); } else { - *ip_addr = '\0'; ++ip_addr; // skip over ':' - - if (ACE_OS::strspn (ip_addr, - "1234567890") == - ACE_OS::strlen (ip_addr)) - { - u_short port = - (u_short) ACE_OS::atoi (ip_addr); - result = this->set (port, t); - } - else - result = this->set (ip_addr, t); + *ip_addr = '\0'; + u_short port = (u_short) ACE_OS::atoi (ip_addr + 1); // Skip over ':' + result = this->set (port, t); } ACE_OS::free (ACE_MALLOC_T (t)); |