diff options
Diffstat (limited to 'TAO/tao/GIOP_Message_Lite.cpp')
-rw-r--r-- | TAO/tao/GIOP_Message_Lite.cpp | 42 |
1 files changed, 16 insertions, 26 deletions
diff --git a/TAO/tao/GIOP_Message_Lite.cpp b/TAO/tao/GIOP_Message_Lite.cpp index 12e666c5f2d..4e5238b9312 100644 --- a/TAO/tao/GIOP_Message_Lite.cpp +++ b/TAO/tao/GIOP_Message_Lite.cpp @@ -864,15 +864,6 @@ TAO_GIOP_Message_Lite::process_request (TAO_Transport *transport, } 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) { CORBA::UNKNOWN exception ( @@ -883,23 +874,20 @@ TAO_GIOP_Message_Lite::process_request (TAO_Transport *transport, CORBA::COMPLETED_MAYBE ); - result = this->send_reply_exception (transport, - this->orb_core_, - request_id, - &request.reply_service_info (), - &exception); - if (result == -1) + if (this->send_reply_exception (transport, + this->orb_core_, + 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_Lite::process_request[3], ") - ACE_TEXT ("%p: ") - ACE_TEXT ("cannot send exception\n"), - ACE_TEXT ("process_request ()"))); - exception._tao_print_exception ( - "TAO_GIOP_Message_Lite::process_request[3]"); - } + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("TAO (%P|%t) - TAO_GIOP_Message_Lite::process_request[3], ") + ACE_TEXT ("%p: ") + ACE_TEXT ("cannot send exception\n"), + ACE_TEXT ("process_request ()"))); + exception._tao_print_exception ( + "TAO_GIOP_Message_Lite::process_request[3]"); } } else if (TAO_debug_level > 0) @@ -914,7 +902,9 @@ TAO_GIOP_Message_Lite::process_request (TAO_Transport *transport, 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; |