diff options
author | jeliazkov_i <jeliazkov_i@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-05-05 16:26:36 +0000 |
---|---|---|
committer | jeliazkov_i <jeliazkov_i@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-05-05 16:26:36 +0000 |
commit | 0c9d703e48ab8bb6bd5b9a7ebfd1129faf6089e9 (patch) | |
tree | 3722510b7f2f00af15511173bf6ad803e1d323c1 | |
parent | 2ec31b7ad044dc661b4c91d2486d0758952e6727 (diff) | |
download | ATCD-0c9d703e48ab8bb6bd5b9a7ebfd1129faf6089e9.tar.gz |
ChangeLogTag: Fri May 5 16:12:17 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 12 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.cpp | 6 | ||||
-rw-r--r-- | TAO/tao/TAO_Internal.cpp | 11 |
3 files changed, 25 insertions, 4 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index f61adac40b6..413e2b9a10f 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,15 @@ +Fri May 5 16:12:17 UTC 2006 Iliyan Jeliazkov <iliyan@ociweb.com> + + * tao/ORB_Core.cpp: + * tao/TAO_Internal.cpp: + + The initialization of the additional services, which runs right + after the global repository initialization (open()) was supposed + to execute in the context of that same global repository. This + is necessary in case the initialization causes additional + services to be registered. Fixes a problem with + $TAO_ROOT/tests/RTCORBA/ORB_init. + Fri May 5 11:26:42 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl> * tao/Asynch_Queued_Message.{h,cpp}: diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index 56a68d70e1d..e2cf1b0e1e4 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -2088,7 +2088,11 @@ TAO_ORB_Core::run (ACE_Time_Value *tv, int perform_work ACE_ENV_ARG_DECL_NOT_USED) { - ACE_Service_Config_Guard guard (this->configuration()); + // ORB::run may be called from a thread, different from the one that + // did the ORB_init, consequently we must establish the Service + // Gestalt, this thread will consider "global" + + ACE_Service_Config_Guard use_orbs (this->configuration()); if (TAO_debug_level > 2) { diff --git a/TAO/tao/TAO_Internal.cpp b/TAO/tao/TAO_Internal.cpp index d417436b45a..e696e393121 100644 --- a/TAO/tao/TAO_Internal.cpp +++ b/TAO/tao/TAO_Internal.cpp @@ -176,7 +176,14 @@ TAO::ORB::open_services (ACE_Service_Gestalt* pcfg, ACE_Service_Gestalt * theone = ACE_Service_Config::global (); if (pcfg != theone) { - int status = open_global_services_i (theone, argc, argv, skip_service_config_open); + ACE_Service_Config_Guard guard (theone); + + int status = + open_global_services_i (theone, + argc, + argv, + skip_service_config_open); + if (status == -1) { if (TAO_debug_level > 0) @@ -204,7 +211,6 @@ TAO::ORB::open_services (ACE_Service_Gestalt* pcfg, -1); return -1; } - return 0; } } @@ -265,7 +271,6 @@ namespace if (parse_global_args_i (argc, argv, global_svc_config_argv) == -1) return -1; - ACE_Service_Config_Guard guard (theone); register_global_services_i (theone); int global_svc_config_argc = global_svc_config_argv.length (); |