summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Ice/Application.cpp2
-rw-r--r--cpp/src/Ice/Incoming.cpp21
2 files changed, 22 insertions, 1 deletions
diff --git a/cpp/src/Ice/Application.cpp b/cpp/src/Ice/Application.cpp
index e2073a3ee8d..b4f42e425c7 100644
--- a/cpp/src/Ice/Application.cpp
+++ b/cpp/src/Ice/Application.cpp
@@ -286,7 +286,7 @@ Ice::Application::releaseInterrupt()
sigdelset(&sigset, SIGHUP);
sigdelset(&sigset, SIGINT);
sigdelset(&sigset, SIGTERM);
- sigprocmask(SIG_BLOCK, &sigset, 0);
+ sigprocmask(SIG_SETMASK, &sigset, 0);
}
#endif
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index 0e35443abc0..ee943cec549 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -233,6 +233,27 @@ IceInternal::Incoming::invoke(bool response)
return;
}
+ catch(const Exception& ex)
+ {
+ if(locator && servant)
+ {
+ locator->finished(_current, servant, cookie);
+ }
+
+ _is.endReadEncaps();
+
+ if(response)
+ {
+ _os.endWriteEncaps();
+ _os.b.resize(statusPos);
+ _os.write(static_cast<Byte>(DispatchUnknownException));
+ ostringstream str;
+ str << ex;
+ _os.write(str.str());
+ }
+
+ return;
+ }
catch(const std::exception& ex)
{
if(locator && servant)