summaryrefslogtreecommitdiff
path: root/TAO/tao/Invocation_Adapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Invocation_Adapter.cpp')
-rw-r--r--TAO/tao/Invocation_Adapter.cpp9
1 files changed, 9 insertions, 0 deletions
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_);