diff options
author | Marc Laukien <marc@zeroc.com> | 2004-10-06 04:29:46 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2004-10-06 04:29:46 +0000 |
commit | 9a91a1e670c7e90a1f5f1212ab99a63c4554a69c (patch) | |
tree | 57660813d2739dc9005fcd7bc0e723679ab0289a | |
parent | fixes (diff) | |
download | ice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.tar.bz2 ice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.tar.xz ice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.zip |
fixes
-rw-r--r-- | cpp/src/Glacier2/RequestQueue.cpp | 5 | ||||
-rw-r--r-- | cpp/src/Glacier2/RouterI.cpp | 3 | ||||
-rw-r--r-- | cpp/src/Glacier2/SessionRouterI.cpp | 17 |
3 files changed, 16 insertions, 9 deletions
diff --git a/cpp/src/Glacier2/RequestQueue.cpp b/cpp/src/Glacier2/RequestQueue.cpp index f774a6309cd..7b5ded132f9 100644 --- a/cpp/src/Glacier2/RequestQueue.cpp +++ b/cpp/src/Glacier2/RequestQueue.cpp @@ -149,11 +149,10 @@ Glacier2::RequestQueue::destroy() IceUtil::Monitor<IceUtil::Mutex>::Lock lock(*this); assert(!_destroy); - _destroy = true; - _requests.clear(); - notify(); + + _requests.clear(); } void diff --git a/cpp/src/Glacier2/RouterI.cpp b/cpp/src/Glacier2/RouterI.cpp index 774ade4383b..008b6b4ede2 100644 --- a/cpp/src/Glacier2/RouterI.cpp +++ b/cpp/src/Glacier2/RouterI.cpp @@ -58,6 +58,7 @@ Glacier2::RouterI::destroy() IceUtil::Mutex::Lock lock(*this); assert(!_destroy); + _destroy = true; _clientBlobject->destroy(); @@ -70,8 +71,6 @@ Glacier2::RouterI::destroy() { _session->destroy(); } - - _destroy = true; } ObjectPrx diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp index 728190ca5b7..00c914d2924 100644 --- a/cpp/src/Glacier2/SessionRouterI.cpp +++ b/cpp/src/Glacier2/SessionRouterI.cpp @@ -143,15 +143,14 @@ Glacier2::SessionRouterI::destroy() IceUtil::Monitor<IceUtil::Mutex>::Lock lock(*this); assert(!_destroy); + _destroy = true; + notify(); _routersByConnection.swap(routers); _routersByConnectionHint = _routersByConnection.end(); _routersByCategory.clear(); _routersByCategoryHint = _routersByCategory.end(); - - _destroy = true; - notify(); } // @@ -316,7 +315,17 @@ Glacier2::SessionRouterI::destroySession(const Current& current) // We destroy the router outside the thread synchronization, to // avoid deadlocks. // - router->destroy(); + try + { + router->destroy(); + } + catch(const Ice::Exception& ex) + { + Trace out(_logger, "Glacier2"); + out << "exception while destroying session\n"; + out << ex; + ex.ice_throw(); + } } RouterIPtr |