summaryrefslogtreecommitdiff
path: root/ace/SOCK_Acceptor.cpp
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-04-08 05:47:11 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-04-08 05:47:11 +0000
commit678a2fa36c704503ef68be2e2f4ca2cf1f2b5a16 (patch)
tree3654d9e5b125fd36efa1fb45f70851f528c0923f /ace/SOCK_Acceptor.cpp
parent53a153d8867d4acbb006137e17c7ce3c4b9cc94a (diff)
downloadATCD-678a2fa36c704503ef68be2e2f4ca2cf1f2b5a16.tar.gz
*** empty log message ***
Diffstat (limited to 'ace/SOCK_Acceptor.cpp')
-rw-r--r--ace/SOCK_Acceptor.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/ace/SOCK_Acceptor.cpp b/ace/SOCK_Acceptor.cpp
index 612d4a6b993..e32d1bd121d 100644
--- a/ace/SOCK_Acceptor.cpp
+++ b/ace/SOCK_Acceptor.cpp
@@ -70,14 +70,28 @@ ACE_SOCK_Acceptor::open (const ACE_Addr &local_sap,
{
ACE_TRACE ("ACE_SOCK_Acceptor::open");
int error = 0;
-
+
if (ACE_SOCK::open (SOCK_STREAM, protocol_family,
protocol, reuse_addr) == -1)
error = 1;
- else if (local_sap == ACE_Addr::sap_any
- && protocol_family == PF_INET)
+
+ else if (protocol_family == PF_INET)
{
- if (ACE::bind_port (this->get_handle ()) == -1)
+ sockaddr_in local_inet_addr;
+ ACE_OS::memset ((void *) &local_inet_addr,
+ 0,
+ sizeof local_inet_addr);
+
+ if (local_sap == ACE_Addr::sap_any)
+ {
+ local_inet_addr.sin_port = 0;
+ local_inet_addr.sin_addr.s_addr = htonl (INADDR_ANY);
+ }
+ else
+ local_inet_addr = *(sockaddr_in *) local_sap.get_addr ();
+
+ if (ACE::bind_port (this->get_handle (),
+ local_inet_addr.sin_addr.s_addr) == -1)
error = 1;
}
else if (ACE_OS::bind (this->get_handle (), (sockaddr *) local_sap.get_addr (),