summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Incoming.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r--cpp/src/Ice/Incoming.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index 6d1547eb060..03699a7938c 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -96,14 +96,24 @@ IceInternal::Incoming::invoke(BasicStream& is)
_os.write(p._prx);
return;
}
- catch(const Exception&)
+ catch(const LocalException&)
{
if (locator && servant)
{
locator->finished(_adapter, identity, servant, operation, cookie);
}
_os.b.resize(statusPos);
- _os.write(static_cast<Byte>(DispatchLocalException));
+ _os.write(static_cast<Byte>(DispatchUnknownLocalException));
+ throw;
+ }
+ catch(const UserException&)
+ {
+ if (locator && servant)
+ {
+ locator->finished(_adapter, identity, servant, operation, cookie);
+ }
+ _os.b.resize(statusPos);
+ _os.write(static_cast<Byte>(DispatchUnknownUserException));
throw;
}
catch(...)