diff options
author | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-12-04 17:32:29 +0000 |
---|---|---|
committer | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-12-04 17:32:29 +0000 |
commit | 8fdfedea6ce25665e780360f991e6b808267be49 (patch) | |
tree | 9b59700502a5b853e3020efc8ebacca1e79ace11 | |
parent | 844289bc923950d0adad54017abd168e22b45a6b (diff) | |
download | ATCD-8fdfedea6ce25665e780360f991e6b808267be49.tar.gz |
ChangeLogTag: Mon Dec 4 17:30:30 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 33 | ||||
-rw-r--r-- | TAO/tao/Invocation_Adapter.cpp | 9 | ||||
-rw-r--r-- | TAO/tao/LocateRequest_Invocation_Adapter.cpp | 11 |
3 files changed, 52 insertions, 1 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 23b515b2a51..1e278506634 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,16 @@ +Mon Dec 4 17:30:30 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com> + + * tao/Invocation_Adapter.cpp (invoke_i): + * tao/LocateRequest_Invocation_Adapter.cpp (invoke): + + Added a service config guard to ensure the invocation is + processed, using the correct configuration repository. The + change ensures that the ORB's repository is going to be + "current" for the duration of the invocation, which is needed if + timeouts and other policies are applied as expected. Thanks to + Eider Oliveira <eider dot oliveira at gmail dot com> for + submitting the defect (bug# 2734) + Mon Dec 4 16:17:07 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/util/utl_err.cpp (syntax_error): @@ -68,6 +81,15 @@ Mon Dec 4 07:59:57 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl> Sun Dec 3 14:25:57 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com> +<<<<<<< .mine + * tests/ORB_Local_Config/Bug_1459/Makefile.am: + * tests/ORB_Local_Config/Bunch/Makefile.am: + * tests/ORB_Local_Config/Separation/Makefile.am: + * tests/ORB_Local_Config/Shared/Makefile.am: + * tests/ORB_Local_Config/Two_DLL_ORB/Makefile.am: + * tests/ORB_Local_Config/Simple/Makefile.am: + * tests/ORB_Local_Config/Service_Dependency/Makefile.am: +======= * tests/ORB_Local_Config/Bug_1459/Makefile.am: * tests/ORB_Local_Config/Bunch/Makefile.am: * tests/ORB_Local_Config/Separation/Makefile.am: @@ -75,9 +97,19 @@ Sun Dec 3 14:25:57 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com> * tests/ORB_Local_Config/Two_DLL_ORB/Makefile.am: * tests/ORB_Local_Config/Simple/Makefile.am: * tests/ORB_Local_Config/Service_Dependency/Makefile.am: +>>>>>>> .r75788 Regenerated. +<<<<<<< .mine + * tests/ORB_Local_Config/Bug_1459/Bug_1459.mpc: + * tests/ORB_Local_Config/Bunch/Bunch.mpc: + * tests/ORB_Local_Config/Separation/Separation.mpc: + * tests/ORB_Local_Config/Shared/Shared.mpc: + * tests/ORB_Local_Config/Two_DLL_ORB/Two_DLL_ORB.mpc: + * tests/ORB_Local_Config/Simple/Simple.mpc: + * tests/ORB_Local_Config/Service_Dependency/Service_Dependency.mpc: +======= * tests/ORB_Local_Config/Bug_1459/Bug_1459.mpc: * tests/ORB_Local_Config/Bunch/Bunch.mpc: * tests/ORB_Local_Config/Separation/Separation.mpc: @@ -85,6 +117,7 @@ Sun Dec 3 14:25:57 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com> * tests/ORB_Local_Config/Two_DLL_ORB/Two_DLL_ORB.mpc: * tests/ORB_Local_Config/Simple/Simple.mpc: * tests/ORB_Local_Config/Service_Dependency/Service_Dependency.mpc: +>>>>>>> .r75788 Add automake specific section so that includes is set relative to $(srcdir). diff --git a/TAO/tao/Invocation_Adapter.cpp b/TAO/tao/Invocation_Adapter.cpp index 5e39f482997..1072cb12636 100644 --- a/TAO/tao/Invocation_Adapter.cpp +++ b/TAO/tao/Invocation_Adapter.cpp @@ -14,6 +14,8 @@ #include "tao/GIOP_Utils.h" #include "tao/TAOC.h" +#include "ace/Service_Config.h" + #if !defined (__ACE_INLINE__) # include "tao/Invocation_Adapter.inl" #endif /* __ACE_INLINE__ */ @@ -60,6 +62,13 @@ namespace TAO TAO_Operation_Details &details ACE_ENV_ARG_DECL) { + // The invocation has got to be within the context of the + // corresponding ORB's configuration. Otherwise things like + // timeout hooks, etc may not work as expected. Especially if + // there are multiple ORB instances in the process, each with its + // own, local configuration. + ACE_Service_Config_Guard scg (stub->orb_core ()->configuration ()); + // Cache the target to a local variable. CORBA::Object_var effective_target = CORBA::Object::_duplicate (this->target_); diff --git a/TAO/tao/LocateRequest_Invocation_Adapter.cpp b/TAO/tao/LocateRequest_Invocation_Adapter.cpp index 98e31a4cd23..a8058d59eeb 100644 --- a/TAO/tao/LocateRequest_Invocation_Adapter.cpp +++ b/TAO/tao/LocateRequest_Invocation_Adapter.cpp @@ -5,6 +5,9 @@ #include "tao/Transport.h" #include "tao/Transport_Mux_Strategy.h" #include "tao/ORB_Core.h" +#include "tao/Stub.h" + +#include "ace/Service_Config.h" ACE_RCSID (tao, LocateRequest_Invocation_Adapter, @@ -28,7 +31,6 @@ namespace TAO TAO_Stub * const stub = this->target_->_stubobj (); - if (stub == 0) ACE_THROW (CORBA::INTERNAL ( CORBA::SystemException::_tao_minor_code ( @@ -36,6 +38,13 @@ namespace TAO EINVAL), CORBA::COMPLETED_NO)); + // The invocation has got to be within the context of the + // corresponding ORB's configuration. Otherwise things like + // timeout hooks, etc may not work as expected. Especially if + // there are multiple ORB instances in the process, each with its + // own, local configuration. + ACE_Service_Config_Guard scg (stub->orb_core ()->configuration ()); + ACE_Time_Value tmp_wait_time; ACE_Time_Value *max_wait_time = 0; |