diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp index 9e04e168a8a..baa8bc86b66 100644 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp +++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Transport.cpp @@ -285,6 +285,18 @@ TAO_SSLIOP_Transport::tear_listen_point_list (TAO_InputCDR &cdr) // As we have received a bidirectional information, set the flag to // 1 this->bidirectional_flag (1); + + // Just make sure that the connection handler is sane before we go + // head and do anything with it. + ACE_GUARD_RETURN (ACE_Lock, + ace_mon, + *this->handler_lock_, + -1); + + if (this->check_event_handler_i ("SSLIOP_Transport::tear_listen_point_list") + == -1) + return -1; + return this->connection_handler_->process_listen_point_list (listen_list); } @@ -311,8 +323,15 @@ TAO_SSLIOP_Transport::set_bidir_context_info (TAO_Operation_Details &opdetails) // Check whether it is a IIOP acceptor if ((*acceptor)->tag () == IOP::TAG_INTERNET_IOP) { - this->get_listen_point (listen_point_list, - *acceptor); + if (this->get_listen_point (listen_point_list, + *acceptor) == -1) + { + ACE_ERROR ((LM_ERROR, + "TAO (%P|%t) - SSLIOP_Transport::set_bidir_info, ", + "error getting listen_point \n")); + + return; + } } } @@ -359,16 +378,29 @@ TAO_SSLIOP_Transport::get_listen_point ( // Get the local address of the connection ACE_INET_Addr local_addr; + { + // Just make sure that the connection handler is sane before we go + // head and do anything with it. + ACE_GUARD_RETURN (ACE_Lock, + ace_mon, + *this->handler_lock_, + -1); + + if (this->check_event_handler_i ("SSLIOP_Transport::get_listen_point") + == -1) + return -1; - if (this->connection_handler_->peer ().get_local_addr (local_addr) - == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("(%P|%t) Could not resolve local host") - ACE_TEXT (" address in get_listen_point()\n")), + if (this->connection_handler_->peer ().get_local_addr (local_addr) + == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("(%P|%t) Could not resolve local host") + ACE_TEXT (" address in get_listen_point()\n")), -1); } + } + // Note: Looks like there is no point in sending the list of // endpoints on interfaces on which this connection has not // been established. If this is wrong, please correct me. |