From f7b2cf35dad61149a95874a50d25cbb6580b75dc Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Wed, 11 Feb 2009 15:37:23 +0100 Subject: Fixed bug 3722 & 3723 - IceGrid leaks upon start failure --- cpp/src/IceGrid/NodeSessionManager.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'cpp/src/IceGrid/NodeSessionManager.cpp') 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(); -- cgit v1.2.3