summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/SubscriberPool.cpp
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2006-11-20 10:11:20 +0000
committerMatthew Newhook <matthew@zeroc.com>2006-11-20 10:11:20 +0000
commit6d6bc7cfaa66f236605fbd66831d43eac264049d (patch)
treee74b3657a445c1beda76b76a7ebed4ba7ad03720 /cpp/src/IceStorm/SubscriberPool.cpp
parentbreak cycle on shutdown from the subscriber pool. (diff)
downloadice-6d6bc7cfaa66f236605fbd66831d43eac264049d.tar.bz2
ice-6d6bc7cfaa66f236605fbd66831d43eac264049d.tar.xz
ice-6d6bc7cfaa66f236605fbd66831d43eac264049d.zip
break cycle on shutdown from the subscriber pool.
Diffstat (limited to 'cpp/src/IceStorm/SubscriberPool.cpp')
-rw-r--r--cpp/src/IceStorm/SubscriberPool.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/cpp/src/IceStorm/SubscriberPool.cpp b/cpp/src/IceStorm/SubscriberPool.cpp
index 252e75745ee..9865e0ac681 100644
--- a/cpp/src/IceStorm/SubscriberPool.cpp
+++ b/cpp/src/IceStorm/SubscriberPool.cpp
@@ -265,6 +265,12 @@ SubscriberPool::dequeue(SubscriberPtr& subscriber, bool requeue, const IceUtil::
{
Lock sync(*this);
+ if(_destroyed)
+ {
+ subscriber = 0;
+ return;
+ }
+
if(subscriber)
{
if(requeue)
@@ -431,6 +437,7 @@ SubscriberPool::destroy()
_subscriberPoolMonitor->destroy();
}
_subscribers.clear();
+ _pending.clear();
}
//
// Next join with each worker.