summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Mitz <mitza@ociweb.com>2017-12-01 13:30:07 -0600
committerAdam Mitz <mitza@ociweb.com>2017-12-01 13:30:07 -0600
commit4cfd0f592e8a2bce85c306d5592b6a842d200eae (patch)
tree1f000143b2c657109081253332a984ce88ffbcc1
parent8a27a5e9f823948006f76d32f66230c9ff2239b5 (diff)
downloadATCD-4cfd0f592e8a2bce85c306d5592b6a842d200eae.tar.gz
For BiDir GIOP over SSL, need to handle IPv4-mapped IPv6 addresses.
-rw-r--r--TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp
index 43db7edd65a..3a123c382f7 100644
--- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp
+++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp
@@ -258,16 +258,18 @@ TAO::SSLIOP::Transport::get_listen_point (
// Get the local address of the connection
ACE_INET_Addr local_addr;
- {
- if (this->connection_handler_->peer ().get_local_addr (local_addr) == -1)
- {
- ORBSVCS_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("(%P|%t) Could not resolve local host")
- ACE_TEXT (" address in get_listen_point()\n")),
- -1);
- }
+ if (this->connection_handler_->peer ().get_local_addr (local_addr) == -1)
+ {
+ ORBSVCS_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) Could not resolve local host")
+ ACE_TEXT (" address in get_listen_point()\n")),
+ -1);
+ }
- }
+#ifdef ACE_HAS_IPV6
+ if (local_addr.is_ipv4_mapped_ipv6 ())
+ local_addr.set (local_addr.get_port_number (), local_addr.get_ip_address ());
+#endif /* ACE_HAS_IPV6 */
// Note: Looks like there is no point in sending the list of
// endpoints on interfaces on which this connection has not