summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2017-03-30 13:18:10 -0400
committerSteve Huston <shuston@riverace.com>2017-03-30 16:48:29 -0400
commita138322c8154ab32634839ffec7c04a38886d459 (patch)
tree2a185a296d6993b7cc83cf8250e0733fe641a8b3
parent1ba8d16b35572416afebe6ee710b564c67cbbc05 (diff)
downloadATCD-a138322c8154ab32634839ffec7c04a38886d459.tar.gz
Fix ability to request IPv4 address from ACE_INET_Addr::set
-rw-r--r--ACE/ace/INET_Addr.cpp3
-rw-r--r--ACE/tests/INET_Addr_Test_IPV6.cpp25
2 files changed, 26 insertions, 2 deletions
diff --git a/ACE/ace/INET_Addr.cpp b/ACE/ace/INET_Addr.cpp
index bb42bdfefbc..5bd1105af5e 100644
--- a/ACE/ace/INET_Addr.cpp
+++ b/ACE/ace/INET_Addr.cpp
@@ -500,6 +500,9 @@ ACE_INET_Addr::set (const char port_name[],
}
int address_family = PF_UNSPEC;
+ if (ACE_OS::strcmp(protocol, "tcp") == 0)
+ address_family = AF_INET;
+
# if defined (ACE_HAS_IPV6)
if (ACE_OS::strcmp (protocol, "tcp6") == 0)
address_family = AF_INET6;
diff --git a/ACE/tests/INET_Addr_Test_IPV6.cpp b/ACE/tests/INET_Addr_Test_IPV6.cpp
index 7ea9ac1cd60..049c98ad88c 100644
--- a/ACE/tests/INET_Addr_Test_IPV6.cpp
+++ b/ACE/tests/INET_Addr_Test_IPV6.cpp
@@ -58,11 +58,11 @@ static bool check_both_families()
{
bool good = true;
ACE_INET_Addr a;
- if (-1 == a.set(ACE_TEXT (""), ACE_TEXT ("facebook.com"), ACE_TEXT ("tcp")))
+ if (-1 == a.set(ACE_TEXT (""), ACE_TEXT ("www.google.com"), ACE_TEXT ("tcp")))
{
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("%p\n"),
- ACE_TEXT ("both test, facebook.com")));
+ ACE_TEXT ("both test 4, www.google.com")));
good = false;
}
else
@@ -79,6 +79,27 @@ static bool check_both_families()
}
}
+ ACE_INET_Addr b;
+ if (-1 == b.set(ACE_TEXT(""), ACE_TEXT("www.google.com"), ACE_TEXT("tcp6")))
+ {
+ ACE_ERROR((LM_ERROR,
+ ACE_TEXT("%p\n"),
+ ACE_TEXT("both test 6, www.google.com")));
+ good = false;
+ }
+ else
+ {
+ ACE_TCHAR str[1000];
+ b.addr_to_string(str, 1000, 1);
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT("got type %d, addr %s\n"), b.get_type(), str));
+ // Should have selected IPv6.
+ if (b.get_type() != AF_INET6)
+ {
+ ACE_ERROR((LM_ERROR,
+ ACE_TEXT("Wrong address family, expecting IPv6\n")));
+ good = false;
+ }
+ }
return good;
}