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 17:13:24 -0400
commitf845e89108721bd313b9f3425d599284caa9d202 (patch)
tree13a83dec8ea20491247d6dc8567ea345fa2ae92b
parente5cb601f3d32162eda473033e84f1f8bfb28ce07 (diff)
downloadATCD-f845e89108721bd313b9f3425d599284caa9d202.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 cf25f94196e..038e585174f 100644
--- a/ACE/ace/INET_Addr.cpp
+++ b/ACE/ace/INET_Addr.cpp
@@ -511,6 +511,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 a3c37ce6412..dddeacd1302 100644
--- a/ACE/tests/INET_Addr_Test_IPV6.cpp
+++ b/ACE/tests/INET_Addr_Test_IPV6.cpp
@@ -56,11 +56,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
@@ -77,6 +77,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;
}