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.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/TAO/tao/Invocation_Adapter.cpp b/TAO/tao/Invocation_Adapter.cpp
index 39ac727b340..17d91b4db07 100644
--- a/TAO/tao/Invocation_Adapter.cpp
+++ b/TAO/tao/Invocation_Adapter.cpp
@@ -12,6 +12,8 @@
#include "tao/Transport_Mux_Strategy.h"
#include "tao/Collocation_Proxy_Broker.h"
#include "tao/GIOP_Utils.h"
+#include "tao/TAOC.h"
+
#if !defined (__ACE_INLINE__)
# include "tao/Invocation_Adapter.inl"
#endif /* __ACE_INLINE__ */
@@ -65,8 +67,6 @@ namespace TAO
// Initial state
TAO::Invocation_Status status = TAO_INVOKE_START;
- ACE_Time_Value *max_wait_time = 0;
-
while (status == TAO_INVOKE_START ||
status == TAO_INVOKE_RESTART)
{
@@ -88,6 +88,7 @@ namespace TAO
if (strat == TAO_CS_REMOTE_STRATEGY ||
strat == TAO_CS_LAST)
{
+ ACE_Time_Value *max_wait_time = 0;
status =
this->invoke_remote_i (stub,
details,
@@ -262,12 +263,18 @@ namespace TAO
(void) this->set_response_flags (stub,
details);
+ CORBA::Octet rflags = details.response_flags ();
+ bool block_connect =
+ rflags != static_cast<CORBA::Octet> (Messaging::SYNC_NONE)
+ && rflags != static_cast<CORBA::Octet> (TAO::SYNC_EAGER_BUFFERING)
+ && rflags != static_cast<CORBA::Octet> (TAO::SYNC_DELAYED_BUFFERING);
+
// Create the resolver which will pick (or create) for us a
// transport and a profile from the effective_target.
Profile_Transport_Resolver resolver (
effective_target.in (),
stub,
- (details.response_flags () != Messaging::SYNC_NONE));
+ block_connect);
resolver.resolve (max_wait_time
ACE_ENV_ARG_PARAMETER);