summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ProxyFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ProxyFactory.cpp')
-rw-r--r--cpp/src/Ice/ProxyFactory.cpp31
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
{
//