summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-12-04 17:32:29 +0000
committeriliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-12-04 17:32:29 +0000
commit8fdfedea6ce25665e780360f991e6b808267be49 (patch)
tree9b59700502a5b853e3020efc8ebacca1e79ace11
parent844289bc923950d0adad54017abd168e22b45a6b (diff)
downloadATCD-8fdfedea6ce25665e780360f991e6b808267be49.tar.gz
ChangeLogTag: Mon Dec 4 17:30:30 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
-rw-r--r--TAO/ChangeLog33
-rw-r--r--TAO/tao/Invocation_Adapter.cpp9
-rw-r--r--TAO/tao/LocateRequest_Invocation_Adapter.cpp11
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;