diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/Ice/Proxy.cpp | 11 |
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 |