summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/IncomingAsync.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/IncomingAsync.cpp')
-rw-r--r--cpp/src/Ice/IncomingAsync.cpp36
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();
+ }
}