summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Proxy.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index 50bac167724..73e5efa5627 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -908,18 +908,21 @@ IceProxy::Ice::Object::__handleException(const LocalException& ex, int& cnt)
_delegate = 0;
}
- ProxyFactoryPtr proxyFactory = _reference->getInstance()->proxyFactory();
- if(proxyFactory)
+ ProxyFactoryPtr proxyFactory;
+ try
{
- proxyFactory->checkRetryAfterException(ex, _reference, cnt);
+ proxyFactory = _reference->getInstance()->proxyFactory();
}
- else
+ catch(const CommunicatorDestroyedException&)
{
//
// The communicator is already destroyed, so we cannot retry.
//
ex.ice_throw();
+
}
+
+ proxyFactory->checkRetryAfterException(ex, _reference, cnt);
}
void