Please report new issues athttps://github.com/DOCGroup
Submitted by Arturo J. Montes S. <mitosys@colomsat.net.co>. *** ../Dynamic_Implementation.cpp 2003-09-17 20:05:54.000000000 -0500 --- Dynamic_Implementation.cpp 2003-09-17 20:08:38.000000000 -0500 *************** *** 163,173 **** --- 163,225 ---- ACE_TRY { + #if (TAO_HAS_INTERCEPTORS == 1) + TAO_Object_Adapter::Servant_Upcall *_tao_upcall = + ACE_static_cast (TAO_Object_Adapter::Servant_Upcall *, servant_upcall) ; + + TAO_ServerRequestInterceptor_Adapter _tao_vfr ( + request.orb_core ()->server_request_interceptors (), + request.interceptor_count () + ); + + TAO_ServerRequestInfo _tao_ri ( + request, + _tao_upcall + ); + + ACE_TRY + { + { + TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), + 1 /* Copy TSC to RSC */); + + _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + #endif /* TAO_HAS_INTERCEPTORS */ // Delegate to user. this->invoke (dsi_request ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; + #if (TAO_HAS_INTERCEPTORS == 1) + } + + _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); + _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + _tao_ri.exception (&ACE_ANY_EXCEPTION); + _tao_vfr.send_exception ( + &_tao_ri + ACE_ENV_ARG_PARAMETER + ); + ACE_TRY_CHECK; + + PortableInterceptor::ReplyStatus _tao_status = + _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION + || _tao_status == PortableInterceptor::USER_EXCEPTION) + ACE_RE_THROW; + } + ACE_ENDTRY; + ACE_CHECK; + #endif /* TAO_HAS_INTERCEPTORS */ + // Only if the client is waiting. if (request.response_expected () && !request.sync_with_server ()) {
Accepting this one
updated version to 1.4.8, still is valid for the latest version
to pool
Reassign to reporter, could you provide a small regression test that shows that DSI interceptors are broken so that we can check whether your patch solves all the problems?