summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/Instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Glacier2/Instance.cpp')
-rw-r--r--cpp/src/Glacier2/Instance.cpp20
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);