diff options
Diffstat (limited to 'ace/LSOCK_Acceptor.cpp')
-rw-r--r-- | ace/LSOCK_Acceptor.cpp | 52 |
1 files changed, 8 insertions, 44 deletions
diff --git a/ace/LSOCK_Acceptor.cpp b/ace/LSOCK_Acceptor.cpp index fad95eca458..1e6b696eeda 100644 --- a/ace/LSOCK_Acceptor.cpp +++ b/ace/LSOCK_Acceptor.cpp @@ -67,61 +67,25 @@ ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor (const ACE_Addr &remote_sap, int protocol) { ACE_TRACE ("ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor"); - if (this->open (remote_sap, - reuse_addr, - protocol_family, - backlog, - protocol) == -1) - ACE_ERROR ((LM_ERROR, - "ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor")); + if (this->open (remote_sap, reuse_addr, + protocol_family, backlog, protocol) == -1) + ACE_ERROR ((LM_ERROR, "ACE_LSOCK_Acceptor::ACE_LSOCK_Acceptor")); } // General purpose routine for accepting new connections. int -ACE_LSOCK_Acceptor::accept (ACE_LSOCK_Stream &new_stream, +ACE_LSOCK_Acceptor::accept (ACE_LSOCK_Stream &new_local_ipc_sap, ACE_Addr *remote_addr, ACE_Time_Value *timeout, int restart, int reset_new_handle) const { ACE_TRACE ("ACE_LSOCK_Acceptor::accept"); - - int in_blocking_mode = 0; - if (this->shared_accept_start (timeout, - restart, - in_blocking_mode) == -1) - return -1; - else - { - sockaddr *addr = 0; - int len = 0; - - if (remote_addr != 0) - { - len = remote_addr->get_size (); - addr = (sockaddr *) remote_addr->get_addr (); - } - - do - new_stream.set_handle (ACE_OS::accept (this->get_handle (), - addr, - &len)); - while (new_stream.get_handle () == ACE_INVALID_HANDLE - && restart != 0 - && errno == EINTR - && timeout == 0); - - // Reset the size of the addr, which is only necessary for UNIX - // domain sockets. - if (new_stream.get_handle () != ACE_INVALID_HANDLE - && remote_addr != 0) - remote_addr->set_size (len); - } - - return this->shared_accept_finish (new_stream, - in_blocking_mode, - reset_new_handle); + ACE_HANDLE new_handle = + ACE_SOCK_Acceptor::shared_accept (remote_addr, timeout, restart, reset_new_handle); + new_local_ipc_sap.set_handle (new_handle); + return new_handle == ACE_INVALID_HANDLE ? -1 : 0; } // Close down the UNIX domain stream and remove the rendezvous point |