summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/OutgoingAsync.cpp15
-rw-r--r--cpp/src/Ice/Proxy.cpp4
2 files changed, 9 insertions, 10 deletions
diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp
index 0c312b4c6f3..7ccf0536106 100644
--- a/cpp/src/Ice/OutgoingAsync.cpp
+++ b/cpp/src/Ice/OutgoingAsync.cpp
@@ -332,7 +332,7 @@ OutgoingAsyncBase::exceptionImpl(const Exception& ex)
}
bool
-OutgoingAsyncBase::responseImpl(bool ok)
+OutgoingAsyncBase::responseImpl(bool ok, bool invoke)
{
Lock sync(_m);
if(ok)
@@ -347,10 +347,9 @@ OutgoingAsyncBase::responseImpl(bool ok)
_m.notifyAll();
#endif
- bool invoke;
try
{
- invoke = handleResponse(ok);
+ invoke &= handleResponse(ok);
}
catch(const Ice::Exception& ex)
{
@@ -830,13 +829,13 @@ ProxyOutgoingAsyncBase::exceptionImpl(const Exception& ex)
}
bool
-ProxyOutgoingAsyncBase::responseImpl(bool ok)
+ProxyOutgoingAsyncBase::responseImpl(bool ok, bool invoke)
{
if(_proxy->_getReference()->getInvocationTimeout() != -1)
{
_instance->timer()->cancel(ICE_SHARED_FROM_THIS);
}
- return OutgoingAsyncBase::responseImpl(ok);
+ return OutgoingAsyncBase::responseImpl(ok, invoke);
}
void
@@ -1084,7 +1083,7 @@ OutgoingAsync::response()
}
}
- return responseImpl(replyStatus == replyOK);
+ return responseImpl(replyStatus == replyOK, true);
}
catch(const Exception& ex)
{
@@ -1130,8 +1129,8 @@ OutgoingAsync::invoke(const string& operation)
{
_sentSynchronously = true;
_proxy->_getBatchRequestQueue()->finishBatchRequest(&_os, _proxy, operation);
- responseImpl(true);
- return; // Don't call sent/completed callback for batch AMI requests
+ responseImpl(true, false); // Don't call sent/completed callback for batch AMI requests
+ return;
}
//
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index ea668c25017..d24fcc1c4b2 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -124,7 +124,7 @@ AsyncStatus
ProxyGetConnection::invokeRemote(const ConnectionIPtr& connection, bool, bool)
{
_cachedConnection = connection;
- if(responseImpl(true))
+ if(responseImpl(true, true))
{
invokeResponseAsync();
}
@@ -134,7 +134,7 @@ ProxyGetConnection::invokeRemote(const ConnectionIPtr& connection, bool, bool)
AsyncStatus
ProxyGetConnection::invokeCollocated(CollocatedRequestHandler*)
{
- if(responseImpl(true))
+ if(responseImpl(true, true))
{
invokeResponseAsync();
}