summaryrefslogtreecommitdiff
path: root/TAO/tao/GIOP_Message_Base.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/GIOP_Message_Base.cpp')
-rw-r--r--TAO/tao/GIOP_Message_Base.cpp42
1 files changed, 17 insertions, 25 deletions
diff --git a/TAO/tao/GIOP_Message_Base.cpp b/TAO/tao/GIOP_Message_Base.cpp
index b7a0952feac..271e521c3ac 100644
--- a/TAO/tao/GIOP_Message_Base.cpp
+++ b/TAO/tao/GIOP_Message_Base.cpp
@@ -1094,13 +1094,6 @@ TAO_GIOP_Message_Base::process_request (
}
catch (...)
{
- // @@ TODO some c++ exception or another, but what do we do with
- // it?
- // We are supposed to map it into a CORBA::UNKNOWN exception.
- // BTW, this cannot be detected if using the <env> mapping. If
- // we have native exceptions but no support for them in the ORB
- // we should still be able to catch it. If we don't have native
- // exceptions it couldn't have been raised in the first place!
int result = 0;
if (response_required)
@@ -1109,23 +1102,20 @@ TAO_GIOP_Message_Base::process_request (
(TAO_UNHANDLED_SERVER_CXX_EXCEPTION, 0),
CORBA::COMPLETED_MAYBE);
- result = this->send_reply_exception (transport,
- output,
- request_id,
- &request.reply_service_info (),
- &exception);
- if (result == -1)
+ if (this->send_reply_exception (transport,
+ output,
+ request_id,
+ &request.reply_service_info (),
+ &exception) == -1
+ && TAO_debug_level > 0)
{
- if (TAO_debug_level > 0)
- {
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("TAO (%P|%t) - TAO_GIOP_Message_Base::process_request[3], ")
- ACE_TEXT ("%p: ")
- ACE_TEXT ("cannot send exception\n"),
- ACE_TEXT ("process_request ()")));
- exception._tao_print_exception (
- "TAO_GIOP_Message_Base::process_request[3]");
- }
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_GIOP_Message_Base::process_request[3], ")
+ ACE_TEXT ("%p: ")
+ ACE_TEXT ("cannot send exception\n"),
+ ACE_TEXT ("process_request ()")));
+ exception._tao_print_exception (
+ "TAO_GIOP_Message_Base::process_request[3]");
}
}
else if (TAO_debug_level > 0)
@@ -1136,11 +1126,13 @@ TAO_GIOP_Message_Base::process_request (
// However, in this case, we cannot close the connection
// down, since it really isn't the client's fault.
ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("(%P|%t|%N|%l) exception thrown ")
+ ACE_TEXT ("TAO (%P|%t) exception thrown ")
ACE_TEXT ("but client is not waiting a response\n")));
}
- return result;
+ // Propagate the non-CORBA C++ exception up to the application
+ // server.
+ throw;
}
return 0;