summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-10-06 04:29:46 +0000
committerMarc Laukien <marc@zeroc.com>2004-10-06 04:29:46 +0000
commit9a91a1e670c7e90a1f5f1212ab99a63c4554a69c (patch)
tree57660813d2739dc9005fcd7bc0e723679ab0289a
parentfixes (diff)
downloadice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.tar.bz2
ice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.tar.xz
ice-9a91a1e670c7e90a1f5f1212ab99a63c4554a69c.zip
fixes
-rw-r--r--cpp/src/Glacier2/RequestQueue.cpp5
-rw-r--r--cpp/src/Glacier2/RouterI.cpp3
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp17
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