summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeSessionManager.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2009-02-12 09:50:25 -0330
committerDwayne Boone <dwayne@zeroc.com>2009-02-12 09:50:25 -0330
commitd6a276ee2646f92231c3d8b77af8742fbd921bd2 (patch)
tree0826c3e43406de9e0377c43fb01edbbce51fa202 /cpp/src/IceGrid/NodeSessionManager.cpp
parentBug 3651 - slice2cpp --depend does not error on bad slice (diff)
parentEnsure that no more fds error message is flushed before the abort (diff)
downloadice-d6a276ee2646f92231c3d8b77af8742fbd921bd2.tar.bz2
ice-d6a276ee2646f92231c3d8b77af8742fbd921bd2.tar.xz
ice-d6a276ee2646f92231c3d8b77af8742fbd921bd2.zip
Merge branch 'R3_3_branch' of ssh://cvs.zeroc.com/home/git/ice into R3_3_branch
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionManager.cpp')
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index 718a559f92f..878c0bb03d7 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -322,19 +322,29 @@ NodeSessionManager::destroy()
NodeSessionMap sessions;
{
Lock sync(*this);
+ if(_destroyed)
+ {
+ return;
+ }
_destroyed = true;
_sessions.swap(sessions);
notifyAll();
}
- _thread->terminate();
+ if(_thread)
+ {
+ _thread->terminate();
+ }
NodeSessionMap::const_iterator p;
for(p = sessions.begin(); p != sessions.end(); ++p)
{
p->second->terminate();
}
- _thread->getThreadControl().join();
+ if(_thread)
+ {
+ _thread->getThreadControl().join();
+ }
for(p = sessions.begin(); p != sessions.end(); ++p)
{
p->second->getThreadControl().join();