diff --git a/Builds/VisualStudio2013/RippleD.vcxproj b/Builds/VisualStudio2013/RippleD.vcxproj index a3284a3d11..f6a796a6f0 100644 --- a/Builds/VisualStudio2013/RippleD.vcxproj +++ b/Builds/VisualStudio2013/RippleD.vcxproj @@ -2911,6 +2911,8 @@ + + diff --git a/Builds/VisualStudio2013/RippleD.vcxproj.filters b/Builds/VisualStudio2013/RippleD.vcxproj.filters index 8823148131..56bbc901f2 100644 --- a/Builds/VisualStudio2013/RippleD.vcxproj.filters +++ b/Builds/VisualStudio2013/RippleD.vcxproj.filters @@ -4080,6 +4080,9 @@ ripple\peerfinder + + ripple\peerfinder + ripple\peerfinder\sim diff --git a/src/ripple/peerfinder/README.md b/src/ripple/peerfinder/README.md index f20ded400e..69ce81bbbb 100644 --- a/src/ripple/peerfinder/README.md +++ b/src/ripple/peerfinder/README.md @@ -161,11 +161,6 @@ Endpoint messages are received from the overlay over time. The `Bootcache` stores IP addresses useful for gaining initial connections. Each address is associated with the following metadata: - -* **Uptime** - - The number of seconds that the address has maintained an active - peer connection, cumulative, without a connection attempt failure. * **Valence** @@ -173,17 +168,16 @@ Each address is associated with the following metadata: consecutive connection attempts when positive, and the number of failed consecutive connection attempts when negative. If an outgoing connection attempt to the corresponding IP address fails to complete the - handshake, the valence is reset to negative one, and all accrued uptime is - reset to zero. This harsh penalty is intended to prevent popular servers - from forever remaining top ranked in all peer databases. + handshake the valence is reset to negative one. This harsh penalty is + intended to prevent popular servers from forever remaining top ranked in + all peer databases. When choosing addresses from the boot cache for the purpose of -establishing outgoing connections, addresses are ranked in decreasing -order of high uptime, with valence as the tie breaker. The Bootcache is -persistent. Entries are periodically inserted and updated in the corresponding -SQLite database during program operation. When **rippled** is launched, the -existing Bootcache database data is accessed and loaded to accelerate the -bootstrap process. +establishing outgoing connections, addresses are ranked in decreasing order of +valence. The Bootcache is persistent. Entries are periodically inserted and +updated in the corresponding SQLite database during program operation. When +**rippled** is launched, the existing Bootcache database data is accessed and +loaded to accelerate the bootstrap process. Desirable entries in the Bootcache are addresses for servers which are known to have high uptimes, and for which connection attempts usually succeed. However, @@ -341,12 +335,12 @@ desired. The stage remains active while: * There are addresses in the cache that have not been tried recently. -Entries in the Bootcache are ranked, with high uptime and highly connectible -addresses preferred over others. Connection attempts to Bootcache addresses -are very likely to succeed but unlikely to produce an active connection since -the peers likely do not have open slots. Before the remote peer closes the -connection it will send a handful of addresses from its Livecache to help the -new peer coming online obtain connections. +Entries in the Bootcache are ranked, with highly connectible addresses preferred +over others. Connection attempts to Bootcache addresses are very likely to +succeed but unlikely to produce an active connection since the peers likely do +not have open slots. Before the remote peer closes the connection it will send +a handful of addresses from its Livecache to help the new peer coming online +obtain connections. -------------------------------------------------------------------------------- diff --git a/src/ripple/peerfinder/impl/Logic.h b/src/ripple/peerfinder/impl/Logic.h index b65150b4ba..448bb01a64 100644 --- a/src/ripple/peerfinder/impl/Logic.h +++ b/src/ripple/peerfinder/impl/Logic.h @@ -214,21 +214,22 @@ public: //-------------------------------------------------------------------------- // Called when the Checker completes a connectivity test - void checkComplete (beast::IP::Endpoint const& address, - beast::IP::Endpoint const & checkedAddress, Checker::Result const& result) + void checkComplete (beast::IP::Endpoint const& remoteAddress, + beast::IP::Endpoint const& checkedAddress, + Checker::Result const& result) { if (result.error == boost::asio::error::operation_aborted) return; SharedState::Access state (m_state); - Slots::iterator const iter (state->slots.find (address)); + Slots::iterator const iter (state->slots.find (remoteAddress)); SlotImp& slot (*iter->second); if (iter == state->slots.end()) { // The slot disconnected before we finished the check if (m_journal.debug) m_journal.debug << beast::leftw (18) << - "Logic tested " << address << + "Logic tested " << checkedAddress << " but the connection was closed"; return; } @@ -244,12 +245,12 @@ public: if (slot.canAccept) { if (m_journal.debug) m_journal.debug << beast::leftw (18) << - "Logic testing " << address << " succeeded"; + "Logic testing " << checkedAddress << " succeeded"; } else { if (m_journal.info) m_journal.info << beast::leftw (18) << - "Logic testing " << address << " failed"; + "Logic testing " << checkedAddress << " failed"; } } else @@ -264,7 +265,7 @@ public: } if (! slot.canAccept) - state->bootcache.on_failure (address); + state->bootcache.on_failure (checkedAddress); } //-------------------------------------------------------------------------- diff --git a/src/ripple/peerfinder/impl/Manager.cpp b/src/ripple/peerfinder/impl/Manager.cpp index 7fe5db85ee..bc34b419ac 100644 --- a/src/ripple/peerfinder/impl/Manager.cpp +++ b/src/ripple/peerfinder/impl/Manager.cpp @@ -17,10 +17,6 @@ */ //============================================================================== -#if DOXYGEN -#include -#endif - #include #include #include @@ -28,6 +24,10 @@ #include #include +#if DOXYGEN +#include +#endif + namespace ripple { namespace PeerFinder {