From c010a85ef5c2853b15fa254b674b480d2a794758 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 29 Apr 2015 12:02:24 -0700 Subject: [PATCH] Check the correct progress flag on transaction root node receipt --- src/ripple/app/ledger/InboundLedger.cpp | 72 ++----------------------- 1 file changed, 3 insertions(+), 69 deletions(-) diff --git a/src/ripple/app/ledger/InboundLedger.cpp b/src/ripple/app/ledger/InboundLedger.cpp index 05e05cddb..69f82ff01 100644 --- a/src/ripple/app/ledger/InboundLedger.cpp +++ b/src/ripple/app/ledger/InboundLedger.cpp @@ -287,8 +287,7 @@ void InboundLedger::onTimer (bool wasProgress, ScopedLockType&) // so each peer gets triggered once if (mReason != fcHISTORY) trigger (Peer::ptr ()); - if (pc < 4) - addPeers (); + addPeers (); if (mReason == fcHISTORY) trigger (Peer::ptr ()); } @@ -297,72 +296,7 @@ void InboundLedger::onTimer (bool wasProgress, ScopedLockType&) /** Add more peers to the set, if possible */ void InboundLedger::addPeers () { - Overlay::PeerSequence peerList = getApp().overlay ().getActivePeers (); - - int vSize = peerList.size (); - - if (vSize == 0) - { - WriteLog (lsERROR, InboundLedger) << - "No peers to add for ledger acquisition"; - return; - } - - // FIXME-NIKB why are we doing this convoluted thing here instead of simply - // shuffling this vector and then pulling however many entries we need? - - // We traverse the peer list in random order so as not to favor - // any particular peer - // - // VFALCO Use random_shuffle - // http://en.cppreference.com/w/cpp/algorithm/random_shuffle - // - int firstPeer = rand () % vSize; - - int found = 0; - - // First look for peers that are likely to have this ledger - for (int i = 0; i < vSize; ++i) - { - Peer::ptr const& peer = peerList[ (i + firstPeer) % vSize]; - - if (peer->hasLedger (getHash (), mSeq)) - { - if (peerHas (peer) && (++found > 6)) - break; - } - } - - if (!found) - { // Oh well, try some random peers - for (int i = 0; (i < 6) && (i < vSize); ++i) - { - if (peerHas (peerList[ (i + firstPeer) % vSize])) - ++found; - } - if (mSeq != 0) - { - if (m_journal.debug) m_journal.debug << - "Chose " << found << " peer(s) for ledger " << mSeq; - } - else - { - if (m_journal.debug) m_journal.debug << - "Chose " << found << " peer(s) for ledger " << - to_string (getHash ()); - } - } - else if (mSeq != 0) - { - if (m_journal.debug) m_journal.debug << - "Found " << found << " peer(s) with ledger " << mSeq; - } - else - { - if (m_journal.debug) m_journal.debug << - "Found " << found << " peer(s) with ledger " << - to_string (getHash ()); - } + getApp().overlay().selectPeers (&this, 6, ScoreHasLedger (getHash(), mSeq)); } std::weak_ptr InboundLedger::pmDowncast () @@ -996,7 +930,7 @@ bool InboundLedger::takeAsRootNode (Blob const& data, SHAMapAddNode& san) */ bool InboundLedger::takeTxRootNode (Blob const& data, SHAMapAddNode& san) { - if (mFailed || mHaveState) + if (mFailed || mHaveTransactions) { san.incDuplicate(); return true;