diff options
Diffstat (limited to 'ace/TLI_Connector.cpp')
-rw-r--r-- | ace/TLI_Connector.cpp | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/ace/TLI_Connector.cpp b/ace/TLI_Connector.cpp index 12323b0fe1d..289396fda21 100644 --- a/ace/TLI_Connector.cpp +++ b/ace/TLI_Connector.cpp @@ -56,44 +56,27 @@ ACE_TLI_Connector::connect (ACE_TLI_Stream &new_stream, struct t_bind *localaddr; localaddr = (struct t_bind *) - ACE_OS::t_alloc (new_stream.get_handle (), T_BIND, T_ADDR); + ::t_alloc (new_stream.get_handle (), T_BIND, T_ADDR); if (localaddr == 0) result = -1; else { int one = 1; -#if !defined (ACE_HAS_FORE_ATM_XTI) - // Reusing the address causes problems with FORE's API. The - // issue may be that t_optmgmt isn't fully supported by - // FORE. t_errno is TBADOPT after the t_optmgmt call so - // maybe options are configured differently for XTI than for - // TLI (at least for FORE's implementation - XTI is supposed - // to be a superset of TLI). - if (reuse_addr - && new_stream.set_option (SOL_SOCKET, - SO_REUSEADDR, - &one, - sizeof one) == -1) + if (reuse_addr && new_stream.set_option (SOL_SOCKET, SO_REUSEADDR, + &one, sizeof one) == -1) result = -1; else -#endif /* ACE_HAS_FORE_ATM_XTI */ { // localaddr->glen = 0; - //localaddr->addr.maxlen = local_sap.get_size (); + localaddr->addr.maxlen = local_sap.get_size (); localaddr->addr.len = local_sap.get_size (); - ACE_OS::memcpy(localaddr->addr.buf, - local_sap.get_addr (), - localaddr->addr.len); - //localaddr->addr.buf = (char *) local_sap.get_addr (); - - if (ACE_OS::t_bind (new_stream.get_handle (), - localaddr, - localaddr) == -1) + localaddr->addr.buf = (char *) local_sap.get_addr (); + + if (ACE_OS::t_bind (new_stream.get_handle (), localaddr, localaddr) == -1) result = -1; - ACE_OS::t_free ((char *) localaddr, - T_BIND); + ACE_OS::t_free ((char *) localaddr, T_BIND); } } @@ -117,12 +100,9 @@ ACE_TLI_Connector::connect (ACE_TLI_Stream &new_stream, new_stream.close (); return -1; } - //callptr->addr.maxlen = remote_sap.get_size (); + callptr->addr.maxlen = remote_sap.get_size (); callptr->addr.len = remote_sap.get_size (); - ACE_OS::memcpy(callptr->addr.buf, - remote_sap.get_addr (), - callptr->addr.len); - //callptr->addr.buf = (char *) remote_sap.get_addr (); + callptr->addr.buf = (char *) remote_sap.get_addr (); if (udata != 0) ACE_OS::memcpy ((void *) &callptr->udata, (void *) udata, sizeof *udata); @@ -130,11 +110,6 @@ ACE_TLI_Connector::connect (ACE_TLI_Stream &new_stream, ACE_OS::memcpy ((void *) &callptr->opt, (void *) opt, sizeof *opt); // Connect to remote endpoint. -#if defined (ACE_HAS_FORE_ATM_XTI) - // FORE's XTI/ATM driver has problems with ioctl/fcntl calls so (at least - // for now) always have blocking calls. - timeout = 0; -#endif /* ACE_HAS_FORE_ATM_XTI */ if (timeout != 0) // Enable non-blocking, if required. { @@ -166,11 +141,9 @@ ACE_TLI_Connector::connect (ACE_TLI_Stream &new_stream, if (result != -1) { new_stream.set_rwflag (rwf); -#if defined (I_PUSH) && !defined (ACE_HAS_FORE_ATM_XTI) +#if defined (I_PUSH) if (new_stream.get_rwflag ()) - result = ACE_OS::ioctl (new_stream.get_handle (), - I_PUSH, - ACE_const_cast (char *, "tirdwr")); + result = ACE_OS::ioctl (new_stream.get_handle (), I_PUSH, "tirdwr"); #endif /* I_PUSH */ } else if (!(errno == EWOULDBLOCK || errno == ETIME)) @@ -193,9 +166,8 @@ ACE_TLI_Connector::complete (ACE_TLI_Stream &new_stream, ACE_Time_Value *tv) { ACE_TRACE ("ACE_TLI_Connector::complete"); - ACE_HANDLE h = ACE::handle_timed_complete (new_stream.get_handle (), - tv, - 1); + ACE_HANDLE h = ACE::handle_timed_complete (new_stream.get_handle (), tv, 1); + if (h == ACE_INVALID_HANDLE) { new_stream.close (); |