diff options
author | elliott_c <ocielliottc@users.noreply.github.com> | 2008-03-31 15:57:17 +0000 |
---|---|---|
committer | elliott_c <ocielliottc@users.noreply.github.com> | 2008-03-31 15:57:17 +0000 |
commit | b1b07230793924a48e78c2738e35c80d5c29c65e (patch) | |
tree | 560379b1a04841262a74f6303c9c6930c3b27408 | |
parent | 352ed12e0ee8144f5a104201deaeadc5376ea457 (diff) | |
download | ATCD-b1b07230793924a48e78c2738e35c80d5c29c65e.tar.gz |
ChangeLogTag: Mon Mar 31 15:57:58 UTC 2008 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r-- | TAO/ATDChangeLog | 35 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Connection_Handler.cpp | 21 | ||||
-rw-r--r-- | TAO/tao/Connection_Handler.h | 2 | ||||
-rw-r--r-- | TAO/tao/IIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/IIOP_Connector.cpp | 2 | ||||
-rw-r--r-- | TAO/tao/Strategies/COIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Strategies/DIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Strategies/SCIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Strategies/SHMIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Strategies/UIOP_Connection_Handler.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/Transport.cpp | 13 | ||||
-rw-r--r-- | TAO/tao/Transport_Cache_Manager.cpp | 29 | ||||
-rw-r--r-- | TAO/tao/Transport_Cache_Manager.h | 9 | ||||
-rw-r--r-- | TAO/tao/Transport_Connector.cpp | 144 | ||||
-rw-r--r-- | TAO/tao/Transport_Connector.h | 9 |
18 files changed, 174 insertions, 126 deletions
diff --git a/TAO/ATDChangeLog b/TAO/ATDChangeLog index 07105666e0c..5cfa349af3f 100644 --- a/TAO/ATDChangeLog +++ b/TAO/ATDChangeLog @@ -1,3 +1,38 @@ +Mon Mar 31 15:57:58 UTC 2008 Chad Elliott <elliott_c@ociweb.com> + + * orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp: + * orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp: + * orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp: + * tao/IIOP_Connection_Handler.cpp: + * tao/Strategies/COIOP_Connection_Handler.cpp: + * tao/Strategies/DIOP_Connection_Handler.cpp: + * tao/Strategies/SCIOP_Connection_Handler.cpp: + * tao/Strategies/SHMIOP_Connection_Handler.cpp: + * tao/Strategies/UIOP_Connection_Handler.cpp: + + + Pass the close() flags on to the close_handler() call. + + * tao/Connection_Handler.h: + * tao/Connection_Handler.cpp: + + Accept the close flags and remove the transport reference only if + there is a connection pending or the open failed bit is not set in + the provided flags. + + * tao/IIOP_Connector.cpp: + * tao/Transport_Cache_Manager.h: + * tao/Transport_Cache_Manager.cpp: + * tao/Transport_Connector.h: + * tao/Transport_Connector.cpp: + + Clean up style from Adam's review. + + * tao/Transport.cpp: + + Store the cache entry in a temporary in case purging the entry + causes the destruction of the transport. + Fri Mar 21 14:59:25 UTC 2008 Chad Elliott <elliott_c@ociweb.com> * tao/Transport_Connector.cpp: diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp index b75b4b70c61..0644007fbba 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Connection_Handler.cpp @@ -200,9 +200,9 @@ TAO_UIPMC_Connection_Handler::handle_close (ACE_HANDLE, } int -TAO_UIPMC_Connection_Handler::close (u_long) +TAO_UIPMC_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp index 5b77f2f6b8f..b11dca07fda 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Mcast_Connection_Handler.cpp @@ -195,9 +195,9 @@ TAO_UIPMC_Mcast_Connection_Handler::handle_close (ACE_HANDLE, } int -TAO_UIPMC_Mcast_Connection_Handler::close (u_long) +TAO_UIPMC_Mcast_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp index cf5896260cf..594a33c72cb 100644 --- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp +++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connection_Handler.cpp @@ -295,9 +295,9 @@ TAO::SSLIOP::Connection_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) } int -TAO::SSLIOP::Connection_Handler::close (u_long) +TAO::SSLIOP::Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/Connection_Handler.cpp b/TAO/tao/Connection_Handler.cpp index f21b278d0b7..08299dcdc6b 100644 --- a/TAO/tao/Connection_Handler.cpp +++ b/TAO/tao/Connection_Handler.cpp @@ -427,17 +427,24 @@ TAO_Connection_Handler::pos_io_hook (int &) } int -TAO_Connection_Handler::close_handler (void) +TAO_Connection_Handler::close_handler (u_long flags) { this->state_changed (TAO_LF_Event::LFS_CONNECTION_CLOSED, this->orb_core_->leader_follower ()); - this->transport ()->purge_entry(); - this->transport ()->remove_reference (); - // @@ I think that if the connection_pending state is true - // when close_handler is calld, we should probably release - // another reference so that the connector doesn't have to - // worry about it. + // Save these for later. It's possible that purge_entry() called on + // the transport could cause our own death. + bool pending = this->connection_pending_; + TAO_Transport* transport = this->transport (); + + // After calling this, it is unsafe to assume that this object has + // *NOT* been deleted! Only if pending is true are we still around. + transport->purge_entry(); + + // We only need to remove the reference from the transport if there + // were connections pending at the time that the handler is closed. + if (pending || ACE_BIT_DISABLED(flags, 1)) + transport->remove_reference (); return 0; } diff --git a/TAO/tao/Connection_Handler.h b/TAO/tao/Connection_Handler.h index 5b6a6722cc0..c6df326ed6e 100644 --- a/TAO/tao/Connection_Handler.h +++ b/TAO/tao/Connection_Handler.h @@ -111,7 +111,7 @@ public: /// A close() hook, called by the Transport Connector when they want to close /// this handler - virtual int close_handler (void); + virtual int close_handler (u_long flags = 0); /// When waiting for an asynchronous connection to complete an /// additional reference must be maintained, related to bugzilla diff --git a/TAO/tao/IIOP_Connection_Handler.cpp b/TAO/tao/IIOP_Connection_Handler.cpp index 67f73e5c00c..76f32bc81c9 100644 --- a/TAO/tao/IIOP_Connection_Handler.cpp +++ b/TAO/tao/IIOP_Connection_Handler.cpp @@ -342,9 +342,9 @@ TAO_IIOP_Connection_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) } int -TAO_IIOP_Connection_Handler::close (u_long) +TAO_IIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/IIOP_Connector.cpp b/TAO/tao/IIOP_Connector.cpp index 7b38e74f82d..fe3c4b6c866 100644 --- a/TAO/tao/IIOP_Connector.cpp +++ b/TAO/tao/IIOP_Connector.cpp @@ -401,7 +401,7 @@ namespace delete [] tlist_; } - operator TAO_Transport** () + operator TAO_Transport** (void) { return tlist_; } diff --git a/TAO/tao/Strategies/COIOP_Connection_Handler.cpp b/TAO/tao/Strategies/COIOP_Connection_Handler.cpp index 3d72a9eface..10f0fdfdf9e 100644 --- a/TAO/tao/Strategies/COIOP_Connection_Handler.cpp +++ b/TAO/tao/Strategies/COIOP_Connection_Handler.cpp @@ -135,9 +135,9 @@ TAO_COIOP_Connection_Handler::handle_close (ACE_HANDLE, } int -TAO_COIOP_Connection_Handler::close (u_long) +TAO_COIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/tao/Strategies/DIOP_Connection_Handler.cpp b/TAO/tao/Strategies/DIOP_Connection_Handler.cpp index 26bc62bfb99..a4a0bcfca91 100644 --- a/TAO/tao/Strategies/DIOP_Connection_Handler.cpp +++ b/TAO/tao/Strategies/DIOP_Connection_Handler.cpp @@ -269,9 +269,9 @@ TAO_DIOP_Connection_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) } int -TAO_DIOP_Connection_Handler::close (u_long) +TAO_DIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp b/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp index b13df46b4fd..191ac53b3d8 100644 --- a/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp +++ b/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp @@ -267,9 +267,9 @@ TAO_SCIOP_Connection_Handler::handle_close (ACE_HANDLE, } int -TAO_SCIOP_Connection_Handler::close (u_long) +TAO_SCIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/Strategies/SHMIOP_Connection_Handler.cpp b/TAO/tao/Strategies/SHMIOP_Connection_Handler.cpp index 5d7685b824d..3d8103cf561 100644 --- a/TAO/tao/Strategies/SHMIOP_Connection_Handler.cpp +++ b/TAO/tao/Strategies/SHMIOP_Connection_Handler.cpp @@ -231,9 +231,9 @@ TAO_SHMIOP_Connection_Handler::handle_close (ACE_HANDLE, } int -TAO_SHMIOP_Connection_Handler::close (u_long) +TAO_SHMIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/Strategies/UIOP_Connection_Handler.cpp b/TAO/tao/Strategies/UIOP_Connection_Handler.cpp index 1db0f6a87b6..a31bb3ec7c0 100644 --- a/TAO/tao/Strategies/UIOP_Connection_Handler.cpp +++ b/TAO/tao/Strategies/UIOP_Connection_Handler.cpp @@ -206,9 +206,9 @@ TAO_UIOP_Connection_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) } int -TAO_UIOP_Connection_Handler::close (u_long) +TAO_UIOP_Connection_Handler::close (u_long flags) { - return this->close_handler (); + return this->close_handler (flags); } int diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp index 16da80a025d..03a92f51095 100644 --- a/TAO/tao/Transport.cpp +++ b/TAO/tao/Transport.cpp @@ -481,7 +481,14 @@ TAO_Transport::recache_transport (TAO_Transport_Descriptor_Interface *desc) int TAO_Transport::purge_entry (void) { - return this->transport_cache_manager ().purge_entry (this->cache_map_entry_); + // We must store our entry in a temporary and zero out the data member. + // If there is only one reference count on us, we will end up causing + // our own destruction. And we can not be holding a cache map entry if + // that happens. + TAO::Transport_Cache_Manager::HASH_MAP_ENTRY* entry = this->cache_map_entry_; + this->cache_map_entry_ = 0; + + return this->transport_cache_manager ().purge_entry (entry); } int @@ -2636,8 +2643,8 @@ TAO_Transport::pre_close (void) // of the is_connected_ flag, so that during cache lookups the cache // manager doesn't need to be burdened by the lock in is_connected(). this->is_connected_ = false; - this->transport_cache_manager().mark_connected(this->cache_map_entry_, - false); + this->transport_cache_manager ().mark_connected (this->cache_map_entry_, + false); this->purge_entry (); { ACE_MT (ACE_GUARD (ACE_Lock, guard, *this->handler_lock_)); diff --git a/TAO/tao/Transport_Cache_Manager.cpp b/TAO/tao/Transport_Cache_Manager.cpp index b1012a4a842..3d51b1e1649 100644 --- a/TAO/tao/Transport_Cache_Manager.cpp +++ b/TAO/tao/Transport_Cache_Manager.cpp @@ -92,7 +92,7 @@ namespace TAO bool more_to_do = true; while (more_to_do) { - retval = this->cache_map_.bind (ext_id, int_id, entry); + retval = this->cache_map_.bind (ext_id, int_id, entry); if (retval == 0) { // The entry has been added to cache succesfully @@ -112,7 +112,7 @@ namespace TAO } else { - ext_id.index (ext_id.index() + 1); + ext_id.index (ext_id.index () + 1); if (TAO_debug_level > 8) { ACE_DEBUG ((LM_DEBUG, @@ -121,8 +121,7 @@ namespace TAO ACE_TEXT ("Trying with a new index \n"), int_id.transport ()->id (), ext_id.hash (), - ext_id.index () - )); + ext_id.index ())); } } } @@ -225,8 +224,7 @@ namespace TAO while (found != CACHE_FOUND_AVAILABLE && cache_status == 0) { entry = 0; - cache_status = this->cache_map_.find (key, - entry); + cache_status = this->cache_map_.find (key, entry); if (cache_status == 0 && entry) { if (this->is_entry_available (*entry)) @@ -417,10 +415,9 @@ namespace TAO bool Transport_Cache_Manager::is_entry_available (const HASH_MAP_ENTRY &entry) { - Cache_Entries_State entry_state = - entry.int_id_.recycle_state (); + Cache_Entries_State entry_state = entry.int_id_.recycle_state (); bool result = (entry_state == ENTRY_IDLE_AND_PURGABLE || - entry_state == ENTRY_IDLE_BUT_NOT_PURGABLE); + entry_state == ENTRY_IDLE_BUT_NOT_PURGABLE); if (result && entry.int_id_.transport () != 0) { @@ -443,15 +440,15 @@ namespace TAO bool Transport_Cache_Manager::is_entry_connecting (const HASH_MAP_ENTRY &entry) { - Cache_Entries_State entry_state = - entry.int_id_.recycle_state (); + Cache_Entries_State entry_state = entry.int_id_.recycle_state (); bool result = (entry_state == ENTRY_CONNECTING); + if (!result && entry.int_id_.transport () != 0) - { - // if we're not connected, that counts, too. - // Can this happen? Not sure <wilsond@ociweb.com> - result = !entry.int_id_.is_connected_; - } + { + // if we're not connected, that counts, too. + // Can this happen? Not sure <wilsond@ociweb.com> + result = !entry.int_id_.is_connected_; + } if (TAO_debug_level > 8) { diff --git a/TAO/tao/Transport_Cache_Manager.h b/TAO/tao/Transport_Cache_Manager.h index f4734b32054..49d80dfc5ab 100644 --- a/TAO/tao/Transport_Cache_Manager.h +++ b/TAO/tao/Transport_Cache_Manager.h @@ -101,7 +101,8 @@ namespace TAO */ int cache_transport (TAO_Transport_Descriptor_Interface *prop, TAO_Transport *transport, - Cache_Entries_State state = ENTRY_IDLE_BUT_NOT_PURGABLE); + Cache_Entries_State state = + ENTRY_IDLE_BUT_NOT_PURGABLE); /// this is just a shortcut for cache_transport with a third argument of /// <CODE>ENTRY_IDLE_AND_PURGABLE</CODE> @@ -109,7 +110,7 @@ namespace TAO /// but that would require changes to all *_Connection_Handler so I'm /// deferring this for now. (wilsond@ociweb.com) int cache_idle_transport (TAO_Transport_Descriptor_Interface *prop, - TAO_Transport *transport); + TAO_Transport *transport); /// Check the Transport Cache to check whether the connection exists /// in the Cache and return the connection @@ -133,7 +134,9 @@ namespace TAO /// Make the entry idle and ready for use. int make_idle (HASH_MAP_ENTRY *entry); - void set_entry_state (HASH_MAP_ENTRY *entry, TAO::Cache_Entries_State state); + /// Modify the state setting on the provided entry. + void set_entry_state (HASH_MAP_ENTRY *entry, + TAO::Cache_Entries_State state); /// Mark the entry as touched. This call updates the purging /// strategy policy information. diff --git a/TAO/tao/Transport_Connector.cpp b/TAO/tao/Transport_Connector.cpp index db53257cefa..4d509f20da4 100644 --- a/TAO/tao/Transport_Connector.cpp +++ b/TAO/tao/Transport_Connector.cpp @@ -356,74 +356,73 @@ TAO_Connector::wait_for_transport(TAO::Profile_Transport_Resolver *r, return true; } else if (force_wait || r->blocked_connect ()) - { - if (TAO_debug_level > 2) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") - ACE_TEXT(" waiting on transport [%d]\n"), - transport->id () )); - } - int result = this->active_connect_strategy_->wait (transport, timeout); - if (result == -1 && errno == ETIME) - { - if (TAO_debug_level > 2) - { - ACE_DEBUG ((LM_DEBUG, + { + if (TAO_debug_level > 2) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") - ACE_TEXT(" timeout while waiting on transport [%d]\n"), + ACE_TEXT(" waiting on transport [%d]\n"), transport->id () )); - } - } - else if(result == -1) - { - if (TAO_debug_level > 2) - { - static int complain10times = 10; - if (complain10times > 0) - { - complain10times -= 1; - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") - ACE_TEXT(" unknown error waiting on transport [%d] (%d)\n"), - transport->id (), - errno)); - } - } - // purge from the connection cache. If we are not in the - // cache, this does nothing. - transport->purge_entry (); - - // Close the handler. - transport->close_connection (); - - } - else - { - if (TAO_debug_level > 5) - { - ACE_DEBUG ((LM_DEBUG, + } + int result = this->active_connect_strategy_->wait (transport, timeout); + if (result == -1 && errno == ETIME) + { + if (TAO_debug_level > 2) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") - ACE_TEXT("transport [%d], wait completed ok.\n"), + ACE_TEXT(" timeout while waiting on transport [%d]\n"), transport->id () )); - } - return true; - } - } + } + } + else if (result == -1) + { + if (TAO_debug_level > 2) + { + static int complain10times = 10; + if (complain10times > 0) + { + --complain10times; + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") + ACE_TEXT(" unknown error waiting on transport [%d] (%d)\n"), + transport->id (), + errno)); + } + } + // purge from the connection cache. If we are not in the + // cache, this does nothing. + transport->purge_entry (); + + // Close the handler. + transport->close_connection (); + } + else + { + if (TAO_debug_level > 5) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") + ACE_TEXT("transport [%d], wait completed ok.\n"), + transport->id () )); + } + return true; + } + } else - { - if (TAO_debug_level > 2) { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") - ACE_TEXT(" Connection not complete [%d]\n"), - transport->id () )); - } - transport->connection_handler ()->reset_state( - TAO_LF_Event::LFS_CONNECTION_WAIT); + if (TAO_debug_level > 2) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT("TAO (%P|%t) - TAO_Connector::wait_for_transport, ") + ACE_TEXT(" Connection not complete [%d]\n"), + transport->id () )); + } + transport->connection_handler ()->reset_state ( + TAO_LF_Event::LFS_CONNECTION_WAIT); - return true; - } + return true; + } return false; } @@ -452,7 +451,7 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r, base_transport, busy_count); - if (found == TAO::Transport_Cache_Manager::CACHE_FOUND_AVAILABLE ) + if (found == TAO::Transport_Cache_Manager::CACHE_FOUND_AVAILABLE) { // one last check before using the cached connection if (base_transport->connection_handler()->error_detected ()) @@ -476,16 +475,17 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r, ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - Transport_Connector::connect, " "got an existing %s Transport[%d] in role %s\n", - base_transport->is_connected () ? "connected" : "unconnected", + base_transport->is_connected () ? "connected" : + "unconnected", base_transport->id (), cr == TAO::TAO_SERVER_ROLE ? "TAO_SERVER_ROLE" : cr == TAO::TAO_CLIENT_ROLE ? "TAO_CLIENT_ROLE" : "TAO_UNSPECIFIED_ROLE" )); } - return base_transport; + return base_transport; } } - else if (found == TAO::Transport_Cache_Manager::CACHE_FOUND_CONNECTING ) + else if (found == TAO::Transport_Cache_Manager::CACHE_FOUND_CONNECTING) { if (r->blocked_connect ()) { @@ -510,10 +510,10 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r, } } - // In either success or failure cases of wait_for_transport, the - // ref counter in corresponding to the ref counter added by - // find_transport is decremented. - base_transport->remove_reference (); + // In either success or failure cases of wait_for_transport, the + // ref counter in corresponding to the ref counter added by + // find_transport is decremented. + base_transport->remove_reference (); } else { @@ -658,7 +658,7 @@ TAO_Connector::wait_for_connection_completion ( } TAO::Transport_Cache_Manager &tcm = this->orb_core ()->lane_resources ().transport_cache (); - tcm.cache_transport(&desc, transport, TAO::ENTRY_CONNECTING); + tcm.cache_transport (&desc, transport, TAO::ENTRY_CONNECTING); if (TAO_debug_level > 2) { ACE_DEBUG ((LM_DEBUG, @@ -878,10 +878,10 @@ TAO_Connector::create_connect_strategy (void) bool TAO_Connector::new_connection_is_ok (size_t busy_count) { - if (orb_core_ == 0) + if (this->orb_core_ == 0) return true; - unsigned int mux_limit = orb_core_->resource_factory () + unsigned int mux_limit = this->orb_core_->resource_factory () ->max_muxed_connections (); return mux_limit == 0 || busy_count < mux_limit; diff --git a/TAO/tao/Transport_Connector.h b/TAO/tao/Transport_Connector.h index 885660475b0..afa58ef7804 100644 --- a/TAO/tao/Transport_Connector.h +++ b/TAO/tao/Transport_Connector.h @@ -194,11 +194,10 @@ protected: /// Note: no longer changes transport reference count /// @ returns true if wait was uneventful /// @ false if error occurred during wait - bool wait_for_transport( - TAO::Profile_Transport_Resolver *r, - TAO_Transport *base_transport, - ACE_Time_Value * timeout, - bool force_wait); + bool wait_for_transport(TAO::Profile_Transport_Resolver *r, + TAO_Transport *base_transport, + ACE_Time_Value * timeout, + bool force_wait); /// Set the ORB Core pointer void orb_core (TAO_ORB_Core *orb_core); |