diff options
Diffstat (limited to 'cpp/src/Glacier2/Instance.cpp')
-rw-r--r-- | cpp/src/Glacier2/Instance.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/cpp/src/Glacier2/Instance.cpp b/cpp/src/Glacier2/Instance.cpp index 455b2a3ade5..1f65fc04f4f 100644 --- a/cpp/src/Glacier2/Instance.cpp +++ b/cpp/src/Glacier2/Instance.cpp @@ -30,14 +30,30 @@ Glacier2::Instance::Instance(const Ice::CommunicatorPtr& communicator, const Ice { IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(serverSleepTime)); const_cast<RequestQueueThreadPtr&>(_serverRequestQueueThread) = new RequestQueueThread(sleepTime); - _serverRequestQueueThread->start(); + try + { + _serverRequestQueueThread->start(); + } + catch(const IceUtil::Exception&) + { + _serverRequestQueueThread->destroy(); + throw; + } } if(_properties->getPropertyAsIntWithDefault(clientBuffered, 1) > 0) { IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(clientSleepTime)); const_cast<RequestQueueThreadPtr&>(_clientRequestQueueThread) = new RequestQueueThread(sleepTime); - _clientRequestQueueThread->start(); + try + { + _clientRequestQueueThread->start(); + } + catch(const IceUtil::Exception&) + { + _clientRequestQueueThread->destroy(); + throw; + } } const_cast<ProxyVerifierPtr&>(_proxyVerifier) = new ProxyVerifier(communicator); |