diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-08 05:47:11 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-08 05:47:11 +0000 |
commit | 678a2fa36c704503ef68be2e2f4ca2cf1f2b5a16 (patch) | |
tree | 3654d9e5b125fd36efa1fb45f70851f528c0923f /ace/SOCK_Acceptor.cpp | |
parent | 53a153d8867d4acbb006137e17c7ce3c4b9cc94a (diff) | |
download | ATCD-678a2fa36c704503ef68be2e2f4ca2cf1f2b5a16.tar.gz |
*** empty log message ***
Diffstat (limited to 'ace/SOCK_Acceptor.cpp')
-rw-r--r-- | ace/SOCK_Acceptor.cpp | 22 |
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 (), |