diff options
-rw-r--r-- | TAO/ChangeLog | 7 | ||||
-rw-r--r-- | TAO/tao/Leader_Follower_Flushing_Strategy.cpp | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 83803cfbe08..7b38fd1d1ea 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,10 @@ +Tue Sep 8 16:16:17 UTC 2009 Vladimir Zykov <vz@prismtech.com> + + * tao/Leader_Follower_Flushing_Strategy.cpp: + + Additional fix for bug#3697. It must fix Bug_1551_Regression + which got broken by the original fix. + Tue Sep 8 10:46:28 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl> * orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.cpp: diff --git a/TAO/tao/Leader_Follower_Flushing_Strategy.cpp b/TAO/tao/Leader_Follower_Flushing_Strategy.cpp index c3008045536..5312abcd807 100644 --- a/TAO/tao/Leader_Follower_Flushing_Strategy.cpp +++ b/TAO/tao/Leader_Follower_Flushing_Strategy.cpp @@ -47,7 +47,8 @@ TAO_Leader_Follower_Flushing_Strategy::flush_transport ( { TAO_ORB_Core * const orb_core = transport->orb_core (); - while (!transport->queue_is_empty ()) + while (!transport->queue_is_empty () && + orb_core->reactor ()->work_pending ()) { // In case max_wait_time==0 we cannot simply run the orb because // in multi-threaded applications it can easily happen that @@ -55,6 +56,8 @@ TAO_Leader_Follower_Flushing_Strategy::flush_transport ( // transport we're coping with here and this thread will block. // Instead we do run for a small amount of time and then recheck // the queue. + // Also we have to check the work_pending status for the reason + // stated in bugzilla 3697. if (max_wait_time == 0) { ACE_Errno_Guard eguard (errno); |