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.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp
index 4244066079d..2e55df12ce1 100644
--- a/cpp/src/Ice/ProxyFactory.cpp
+++ b/cpp/src/Ice/ProxyFactory.cpp
@@ -99,6 +99,16 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, co
TraceLevelsPtr traceLevels = _instance->traceLevels();
LoggerPtr logger = _instance->initializationData().logger;
+ //
+ // We don't retry batch requests because the exception might have caused
+ // the all the requests batched with the connection to be aborted and we
+ // want the application to be notified.
+ //
+ if(ref->getMode() == Reference::ModeBatchOneway || ref->getMode() == Reference::ModeBatchDatagram)
+ {
+ ex.ice_throw();
+ }
+
const ObjectNotExistException* one = dynamic_cast<const ObjectNotExistException*>(&ex);
if(one)