diff options
Diffstat (limited to 'cpp/src/Glacier2/SessionRouterI.cpp')
-rw-r--r-- | cpp/src/Glacier2/SessionRouterI.cpp | 22 |
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); } |