From fc78cb38ede74ce30a740e80bc061b0c15c58d73 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 13 Jan 2013 21:40:46 -0800 Subject: [PATCH] Don't favor (for acquire) peers that come earlier in the peer vector. --- src/cpp/ripple/LedgerAcquire.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/cpp/ripple/LedgerAcquire.cpp b/src/cpp/ripple/LedgerAcquire.cpp index 02cf8ff62..7af4122b2 100644 --- a/src/cpp/ripple/LedgerAcquire.cpp +++ b/src/cpp/ripple/LedgerAcquire.cpp @@ -172,9 +172,17 @@ void LedgerAcquire::addPeers() { std::vector peerList = theApp->getConnectionPool().getPeerVector(); + int vSize = peerList.size(); + if (vSize == 0) + return; + + // We traverse the peer list in random order so as not to favor any particular peer + int firstPeer = rand() & vSize; + bool found = false; - BOOST_FOREACH(Peer::ref peer, peerList) + for (int i = 0; i < vSize; ++i) { + Peer::ref peer = peerList[(i + firstPeer) % vSize]; if (peer->hasLedger(getHash())) { found = true; @@ -183,10 +191,8 @@ void LedgerAcquire::addPeers() } if (!found) - { - BOOST_FOREACH(Peer::ref peer, peerList) - peerHas(peer); - } + for (int i = 0; i < vSize; ++i) + peerHas(peerList[(i + firstPeer) % vSize]); } boost::weak_ptr LedgerAcquire::pmDowncast()