diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2006-04-25 17:17:33 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2006-04-25 17:17:33 +0000 |
commit | b0da046057e4c4d0ffd4d8244693073c5d59b8ef (patch) | |
tree | b92660c64d315c5886309cbca4af2eb8fce0cde8 /cpp/src | |
parent | Added getSessionTimeout to Router (diff) | |
download | ice-b0da046057e4c4d0ffd4d8244693073c5d59b8ef.tar.bz2 ice-b0da046057e4c4d0ffd4d8244693073c5d59b8ef.tar.xz ice-b0da046057e4c4d0ffd4d8244693073c5d59b8ef.zip |
Fix race condition related to bug 535
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 4 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 8 |
2 files changed, 5 insertions, 7 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index bb9c687d561..b23e628466d 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -1199,6 +1199,10 @@ Ice::ConnectionI::setAdapter(const ObjectAdapterPtr& adapter) if(_adapter) { _servantManager = dynamic_cast<ObjectAdapterI*>(_adapter.get())->getServantManager(); + if(!_servantManager) + { + _adapter = 0; + } } else { diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index f990ca509bb..d8a7c1d774c 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -702,13 +702,7 @@ Ice::ObjectAdapterI::getThreadPool() const ServantManagerPtr Ice::ObjectAdapterI::getServantManager() const { - // No mutex lock necessary, _threadPool and _instance are - // immutable after creation until they are removed in - // waitForDeactivate(). - - // Not check for deactivation here! - - assert(_instance); // Must not be called after waitForDeactivate(). + IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); return _servantManager; } |