diff options
author | bala <balanatarajan@users.noreply.github.com> | 2002-04-14 15:22:08 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2002-04-14 15:22:08 +0000 |
commit | 7ffa18a6417a589b7eb1cdcc8d972918344c8c4e (patch) | |
tree | 74b816a19aaceaa4cdb6991d46d88e6bf9c25ad2 | |
parent | 22ee40226b7af6fc026612e550ce28a61f45db40 (diff) | |
download | ATCD-7ffa18a6417a589b7eb1cdcc8d972918344c8c4e.tar.gz |
ChangeLogTag:Sun Apr 14 10:35:49 2002 Balachandran Natarajan <bala@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLogs/ChangeLog-02a | 5 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp | 28 |
2 files changed, 23 insertions, 10 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index 40f75aec11c..deba7e0baa4 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,8 @@ +Sun Apr 14 10:35:49 2002 Balachandran Natarajan <bala@cs.wustl.edu> + + * orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp: Yet + another protocol needing the same fix. + Sun Apr 14 10:31:24 2002 Balachandran Natarajan <bala@cs.wustl.edu> * tao/Strategies/UIOP_Connection_Handler.cpp: diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp index d7048358d88..63e1580e7b6 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp @@ -236,7 +236,18 @@ TAO_UIPMC_Connection_Handler::handle_close (ACE_HANDLE handle, long upcalls = this->decr_pending_upcalls (); - ACE_ASSERT (upcalls >= 0); + if (upcalls < 0) + return 0; + + if (this->get_handle () != ACE_INVALID_HANDLE) + { + // Just close the socket irrespective of what the upcall count + // is. + this->peer().close (); + + // Set the handle to be INVALID_HANDLE + this->set_handle (ACE_INVALID_HANDLE); + } // Try to clean up things if the upcall count has reached 0 if (upcalls == 0) @@ -273,16 +284,13 @@ TAO_UIPMC_Connection_Handler::handle_close_i (void) } // Close the handle.. - if (this->get_handle () != ACE_INVALID_HANDLE) - { - // Remove the entry as it is invalid - this->transport ()->purge_entry (); + // Remove the entry as it is invalid + this->transport ()->purge_entry (); - // Signal the transport that we will no longer have - // a reference to it. This will eventually call - // TAO_Transport::release (). - this->transport (0); - } + // Signal the transport that we will no longer have + // a reference to it. This will eventually call + // TAO_Transport::release (). + this->transport (0); // Follow usual Reactor-style lifecycle semantics and commit // suicide. |