diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-03-24 19:31:04 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-03-24 19:31:04 +0000 |
commit | 027de520f173d457a044ace19ef96b0fd7aa3b5b (patch) | |
tree | 6eb50db3a161ea04b978cab74e147daf0237c6a3 | |
parent | dd40f056ed87508c8fd5c772ba97f9c9d9e2772e (diff) | |
download | ATCD-027de520f173d457a044ace19ef96b0fd7aa3b5b.tar.gz |
ChangeLogTag: Mon Mar 24 13:12:16 2003 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 10 | ||||
-rw-r--r-- | TAO/tao/Connection_Handler.cpp | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 0a8d3a07e3b..98ec55bfabc 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,13 @@ +Mon Mar 24 13:12:16 2003 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> + + * tao/Connection_Handler.cpp (close_connection_eh): Call the + state_changed () on the LF_CH_Event with the lock held. If not, + we could potentially run into a race between two threads trying + to change states from + TAO_Connection_Handler::close_connection_eh () and + TAO_Transport::close_connection_shared (). The lock within + state_changed () is not sufficient to prevent the race. + Mon Mar 24 13:07:44 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * tao/Any_T.cpp: diff --git a/TAO/tao/Connection_Handler.cpp b/TAO/tao/Connection_Handler.cpp index 574fa731ffe..84adb46e89f 100644 --- a/TAO/tao/Connection_Handler.cpp +++ b/TAO/tao/Connection_Handler.cpp @@ -515,13 +515,11 @@ TAO_Connection_Handler::close_connection_eh (ACE_Event_Handler * eh) this->transport ()->wait_strategy ()->is_registered (0); } - + this->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED); } ACE_ASSERT (this->transport () != 0); - this->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED); - // Signal the transport that we will no longer have // a reference to it. This will eventually call // TAO_Transport::release (). |