diff options
Diffstat (limited to 'cpp/src/Ice/IncomingAsync.cpp')
-rw-r--r-- | cpp/src/Ice/IncomingAsync.cpp | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp index 70a9218e6fc..7a7bc182f05 100644 --- a/cpp/src/Ice/IncomingAsync.cpp +++ b/cpp/src/Ice/IncomingAsync.cpp @@ -345,32 +345,44 @@ IceAsync::Ice::AMD_Array_Object_ice_invoke::AMD_Array_Object_ice_invoke(Incoming void IceAsync::Ice::AMD_Array_Object_ice_invoke::ice_response(bool ok, const pair<const Byte*, const Byte*>& outParams) { - try - { - __os()->writeBlob(outParams.first, static_cast<Int>(outParams.second - outParams.first)); - } - catch(const LocalException& ex) + if(__validateResponse(ok)) { - __exception(ex); - return; + try + { + __os()->writeBlob(outParams.first, static_cast<Int>(outParams.second - outParams.first)); + } + catch(const LocalException& ex) + { + __exception(ex); + return; + } + __response(ok); } - __response(ok); } void IceAsync::Ice::AMD_Array_Object_ice_invoke::ice_exception(const Exception& ex) { - __exception(ex); + if(__validateException(ex)) + { + __exception(ex); + } } void IceAsync::Ice::AMD_Array_Object_ice_invoke::ice_exception(const std::exception& ex) -{ - __exception(ex); +{ + if(__validateException(ex)) + { + __exception(ex); + } } void IceAsync::Ice::AMD_Array_Object_ice_invoke::ice_exception() { - __exception(); + if(__validateException()) + { + __exception(); + } } |