summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/SessionRouterI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Glacier2/SessionRouterI.cpp')
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp
index cfbb9082ebc..9bc16b9b66c 100644
--- a/cpp/src/Glacier2/SessionRouterI.cpp
+++ b/cpp/src/Glacier2/SessionRouterI.cpp
@@ -648,6 +648,23 @@ Glacier2::SessionRouterI::SessionRouterI(const InstancePtr& instance,
routerId.category = _instance->properties()->getPropertyWithDefault("Glacier2.InstanceName", "Glacier2");
routerId.name = "router";
+ if(_sessionThread)
+ {
+ __setNoDelete(true);
+ try
+ {
+ _sessionThread->start();
+ }
+ catch(const IceUtil::Exception&)
+ {
+ _sessionThread->destroy();
+ _sessionThread = 0;
+ __setNoDelete(false);
+ throw;
+ }
+ __setNoDelete(false);
+ }
+
try
{
_instance->clientObjectAdapter()->add(this, routerId);
@@ -673,11 +690,6 @@ Glacier2::SessionRouterI::SessionRouterI(const InstancePtr& instance,
// Ignore.
}
- if(_sessionThread)
- {
- _sessionThread->start();
- }
-
_instance->setSessionRouter(this);
}