summaryrefslogtreecommitdiff
path: root/ace/Connector.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1997-03-22 21:03:22 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1997-03-22 21:03:22 +0000
commitcf65201234014d5509a3b635e6be5924909a5e07 (patch)
treef4b9df9dbe9edda1ce7d4cb05afd67b4bcd2d05b /ace/Connector.cpp
parentd726503942f934532a5a91077303150dae1d638c (diff)
downloadATCD-cf65201234014d5509a3b635e6be5924909a5e07.tar.gz
*** empty log message ***
Diffstat (limited to 'ace/Connector.cpp')
-rw-r--r--ace/Connector.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/ace/Connector.cpp b/ace/Connector.cpp
index e0585dd1711..2339549c475 100644
--- a/ace/Connector.cpp
+++ b/ace/Connector.cpp
@@ -123,6 +123,7 @@ ACE_Connector<SH, PR_CO_2>::open (ACE_Reactor *reactor)
{
ACE_TRACE ("ACE_Connector<SH, PR_CO_2>::open");
this->reactor_ = reactor;
+ this->closing_ = 0;
return 0;
}
@@ -442,9 +443,15 @@ ACE_Connector<SH, PR_CO_2>::handle_close (ACE_HANDLE, ACE_Reactor_Mask mask)
{
ACE_TRACE ("ACE_Connector<SH, PR_CO_2>::handle_close");
- if (this->reactor_ != 0)
+ if (this->reactor_ != 0 && this->closing_ == 0)
{
- // Remove all timer objects from the Reactor's Timer_Queue.
+ // We're closing down now, so make sure not to call ourselves
+ // recursively via other calls to handle_close() (e.g., from the
+ // Timer_Queue).
+ this->closing_ = 1;
+
+ // Remove all timer objects associated with <this> object from
+ // the <Reactor>'s Timer_Queue.
this->reactor_->cancel_timer (this);
MAP_ITERATOR mi (this->handler_map_);