diff options
-rw-r--r-- | TAO/ChangeLog | 6 | ||||
-rw-r--r-- | TAO/tao/Transport.cpp | 19 |
2 files changed, 15 insertions, 10 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index f649b0d1a40..2533b944571 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,9 @@ +Fri Nov 29 19:25:59 2002 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> + + * tao/Transport.cpp: Prevented the thread doing the server side + purging from waiting on the LF and waiting for connection + closure, since its of no use. + Fri Nov 29 18:13:03 2002 Nanbor Wang <nanbor@cs.wustl.edu> * orbsvcs/orbsvcs/Notify/ThreadPool_Task.cpp: Changed to use diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp index ccc4259d486..8cffc50acd1 100644 --- a/TAO/tao/Transport.cpp +++ b/TAO/tao/Transport.cpp @@ -681,7 +681,9 @@ void TAO_Transport::close_connection_no_purge (void) { TAO_Connection_Handler * eh = this->invalidate_event_handler (); - this->close_connection_shared (0, eh); + + this->close_connection_shared (0, + eh); } void @@ -700,16 +702,14 @@ TAO_Transport::close_connection_shared (int purge, return; } - - int retval = 0; - // Set the event handler in the connection close wait state. (void) eh->connection_close_wait (); // NOTE: If the wait strategy is in blocking mode, then there is no // chance that it could be inside the reactor. We can safely skip - // driving the LF. - if (this->ws_->non_blocking ()) + // driving the LF. If <purge> is 0, then we are cleaned up by the + // cache. So no point in driving the LF either. + if (this->ws_->non_blocking () && purge) { // NOTE: This is a work around for BUG 1020. We drive the leader // follower for a predetermined amount of time. Ideally this @@ -717,15 +717,14 @@ TAO_Transport::close_connection_shared (int purge, // cut. Doing that will be a todo.. ACE_Time_Value tv (ACE_DEFAULT_TIMEOUT, 0); - retval = - this->orb_core_->leader_follower ().wait_for_event (eh, + this->orb_core_->leader_follower ().wait_for_event (eh, this, - &tv); + &tv); } // We need to explicitly shut it down to avoid memory leaks. - if (retval == -1 || + if (!eh->successful () || !this->ws_->non_blocking ()) { eh->close_connection (); |