summaryrefslogtreecommitdiff
path: root/TAO/tao/Collocated_Invocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Collocated_Invocation.cpp')
-rw-r--r--TAO/tao/Collocated_Invocation.cpp36
1 files changed, 27 insertions, 9 deletions
diff --git a/TAO/tao/Collocated_Invocation.cpp b/TAO/tao/Collocated_Invocation.cpp
index 584414397cc..504f6c22abd 100644
--- a/TAO/tao/Collocated_Invocation.cpp
+++ b/TAO/tao/Collocated_Invocation.cpp
@@ -41,15 +41,33 @@ namespace TAO
ACE_TRY
{
- cpb->dispatch (this->effective_target (),
- this->forwarded_to_.out (),
- this->details_.args (),
- this->details_.args_num (),
- this->details_.opname (),
- this->details_.opname_len (),
- strat
- ACE_ENV_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ if (strat == TAO_CS_THRU_POA_STRATEGY)
+ {
+ TAO_ServerRequest request (this->orb_core_,
+ this->details_,
+ this->effective_target_);
+
+ TAO_Request_Dispatcher * const dispatcher =
+ this->orb_core_->request_dispatcher ();
+
+ dispatcher->dispatch (this->orb_core_,
+ request,
+ this->forwarded_to_.out ());
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ else
+ {
+ cpb->dispatch (this->effective_target (),
+ this->forwarded_to_.out (),
+ this->details_.args (),
+ this->details_.args_num (),
+ this->details_.opname (),
+ this->details_.opname_len (),
+ strat
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
// Invocation completed succesfully
s = TAO_INVOKE_SUCCESS;