diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-10-05 04:12:53 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-10-05 04:12:53 +0000 |
commit | 0e1b401e0a069c6c0b4de283f57adeac07001a49 (patch) | |
tree | 8bbd893dcd5df8dcd0457e5ff770d89d11f886ad | |
parent | 204a89923e2a2eb746e457b5c6e31d128c4aa615 (diff) | |
download | ATCD-0e1b401e0a069c6c0b4de283f57adeac07001a49.tar.gz |
ChangeLogTag:Sat Oct 4 23:09:51 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 11 | ||||
-rw-r--r-- | TAO/tao/Connection_Handler.cpp | 11 | ||||
-rw-r--r-- | TAO/tao/TODO | 8 |
3 files changed, 27 insertions, 3 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index 4c54927e993..e3f5d06a44a 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,14 @@ +Sat Oct 4 23:09:51 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * tao/Connection_Handler.cpp: Call + send_connection_closed_notification () only after the reactor + and the cache have been cleaned. The call in question can make + upcalls into the application during AMI or AMH. The upcalls can + then try to make a remote invocation which will use the + transport from the cache or the handler from the reactor. Both + of them are bad and they lead to deadlocks. This should fix BUG + 1482 properly. + Wed Oct 1 10:57:12 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_interface.cpp: diff --git a/TAO/tao/Connection_Handler.cpp b/TAO/tao/Connection_Handler.cpp index b13edd7147b..ca2fb063038 100644 --- a/TAO/tao/Connection_Handler.cpp +++ b/TAO/tao/Connection_Handler.cpp @@ -247,10 +247,9 @@ TAO_Connection_Handler::handle_input_eh ( int TAO_Connection_Handler::close_connection_eh (ACE_Event_Handler *eh) { - this->transport ()->send_connection_closed_notifications (); - // Save the ID for debugging messages ACE_HANDLE handle = eh->get_handle (); + size_t id = this->transport ()->id (); if (TAO_debug_level) { @@ -259,6 +258,7 @@ TAO_Connection_Handler::close_connection_eh (ACE_Event_Handler *eh) "close_connection, purging entry from cache\n", handle)); } + this->transport ()->purge_entry (); // @@ This seems silly, but if we have no reason to be in the @@ -326,6 +326,13 @@ TAO_Connection_Handler::close_connection_eh (ACE_Event_Handler *eh) this->transport ()->wait_strategy ()->is_registered (0); } + // This call should be made only after the cache and reactor are + // cleaned up. This call can make upcalls to the application which + // in turn can make remote calls (Bug 1551 and Bug 1482). The remote + // calls from the application can try to use this handler from the + // cache or from the reactor. So clean them up before this is + // called. + this->transport ()->send_connection_closed_notifications (); this->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED); if (TAO_debug_level) diff --git a/TAO/tao/TODO b/TAO/tao/TODO index 95552c9dc5d..a177fe8d5b7 100644 --- a/TAO/tao/TODO +++ b/TAO/tao/TODO @@ -46,4 +46,10 @@ . FTCORBA and service_comm_raise_failure -. DII and oneways
\ No newline at end of file +. DII and oneways + +. test non-gperf generated code + +. test direct collocation generated code + +. test Collocation_Opportunities after talking to Irfan
\ No newline at end of file |