diff options
Diffstat (limited to 'cpp/src/Ice/ProxyFactory.cpp')
-rw-r--r-- | cpp/src/Ice/ProxyFactory.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp index 4e5b67217fd..9d8ef8cb292 100644 --- a/cpp/src/Ice/ProxyFactory.cpp +++ b/cpp/src/Ice/ProxyFactory.cpp @@ -118,20 +118,7 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, if(one) { - LocatorInfoPtr li = ref->getLocatorInfo(); - if(li && ref->isIndirect()) - { - // - // We retry ObjectNotExistException if the reference is - // indirect. - // - - if(ref->isWellKnown()) - { - li->clearCache(ref); - } - } - else if(ref->getRouterInfo() && one->operation == "ice_add_proxy") + if(ref->getRouterInfo() && one->operation == "ice_add_proxy") { // // If we have a router, an ObjectNotExistException with an @@ -153,6 +140,22 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, } return; // We must always retry, so we don't look at the retry count. } + else if(ref->isIndirect()) + { + // + // We retry ObjectNotExistException if the reference is + // indirect. + // + + if(ref->isWellKnown()) + { + LocatorInfoPtr li = ref->getLocatorInfo(); + if(li) + { + li->clearCache(ref); + } + } + } else { // |