diff --git a/modules/ripple_app/ledger/LedgerMaster.cpp b/modules/ripple_app/ledger/LedgerMaster.cpp index 363926e462..37a809a87b 100644 --- a/modules/ripple_app/ledger/LedgerMaster.cpp +++ b/modules/ripple_app/ledger/LedgerMaster.cpp @@ -613,6 +613,16 @@ void LedgerMaster::advanceThread() tryFill(ledger); progress = true; } + else + { + for (int i = 0; i < getConfig().getSize(siLedgerFetch); ++i) + { + uint32 seq = missing - i; + uint256 hash = nextLedger->getLedgerHash(seq); + if (hash.isNonZero()) + getApp().getInboundLedgers().findCreate(hash, seq); + } + } } else { diff --git a/modules/ripple_app/ledger/ripple_InboundLedger.cpp b/modules/ripple_app/ledger/ripple_InboundLedger.cpp index a96f3554a9..cb7909e091 100644 --- a/modules/ripple_app/ledger/ripple_InboundLedger.cpp +++ b/modules/ripple_app/ledger/ripple_InboundLedger.cpp @@ -170,7 +170,7 @@ void InboundLedger::onTimer (bool progress, boost::recursive_mutex::scoped_lock& WriteLog (lsDEBUG, InboundLedger) << "No progress(" << pc << ") for ledger " << mHash; trigger (Peer::pointer ()); - if (pc < 3) + if (pc < 4) addPeers (); } } @@ -212,13 +212,13 @@ void InboundLedger::addPeers () if (peer->hasLedger (getHash (), mSeq)) { - if (peerHas (peer) && (++found == 3)) + if (peerHas (peer) && (++found > 6)) break; } } if (!found) - for (int i = 0; i < ((vSize > 6) ? 6 : vSize); ++i) + for (int i = 0; (i < 6) && (i < vSize); ++i) peerHas (peerList[ (i + firstPeer) % vSize]); }