summaryrefslogtreecommitdiff
path: root/TAO/tao/SHMIOP_Connect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/SHMIOP_Connect.cpp')
-rw-r--r--TAO/tao/SHMIOP_Connect.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/TAO/tao/SHMIOP_Connect.cpp b/TAO/tao/SHMIOP_Connect.cpp
index 886c9dafb2f..2544f92e312 100644
--- a/TAO/tao/SHMIOP_Connect.cpp
+++ b/TAO/tao/SHMIOP_Connect.cpp
@@ -12,6 +12,7 @@
#include "tao/Messaging_Policy_i.h"
#include "tao/GIOP_Message_Acceptors.h"
#include "tao/GIOP_Message_Lite.h"
+#include "tao/Server_Strategy_Factory.h"
#if !defined (__ACE_INLINE__)
# include "tao/SHMIOP_Connect.i"
@@ -217,6 +218,15 @@ TAO_SHMIOP_Server_Connection_Handler::handle_close (ACE_HANDLE handle,
--this->refcount_;
if (this->refcount_ == 0)
{
+ // Remove the handle from the ORB Core's handle set so that it
+ // isn't included in the set that is passed to the reactor upon
+ // ORB destruction.
+ TAO_Server_Strategy_Factory *f =
+ this->orb_core_->server_factory ();
+
+ if (f->activate_server_connections () == 0)
+ (void) this->orb_core_->remove_handle (handle);
+
this->peer().remove ();
return TAO_SHMIOP_SVC_HANDLER::handle_close (handle, rm);
}