diff --git a/src/ripple/app/ledger/InboundLedger.cpp b/src/ripple/app/ledger/InboundLedger.cpp index 0c80fc7fe..a79245de6 100644 --- a/src/ripple/app/ledger/InboundLedger.cpp +++ b/src/ripple/app/ledger/InboundLedger.cpp @@ -100,11 +100,6 @@ void InboundLedger::init (ScopedLockType& collectionLock) { addPeers (); setTimer (); - - // For historical nodes, wait a bit since a - // fetch pack is probably coming - if (mReason != fcHISTORY) - trigger (Peer::ptr ()); } else if (!isFailed ()) { @@ -272,9 +267,16 @@ void InboundLedger::onTimer (bool wasProgress, ScopedLockType&) "No progress(" << pc << ") for ledger " << mHash; - trigger (Peer::ptr ()); + // addPeers triggers if the reason is not fcHISTORY + // So if the reason IS fcHISTORY, need to trigger after we add + // otherwise, we need to trigger before we add + // so each peer gets triggered once + if (mReason != fcHISTORY) + trigger (Peer::ptr ()); if (pc < 4) addPeers (); + if (mReason == fcHISTORY) + trigger (Peer::ptr ()); } } diff --git a/src/ripple/app/ledger/InboundLedger.h b/src/ripple/app/ledger/InboundLedger.h index 800e31958..a59ee7661 100644 --- a/src/ripple/app/ledger/InboundLedger.h +++ b/src/ripple/app/ledger/InboundLedger.h @@ -114,7 +114,10 @@ private: void newPeer (Peer::ptr const& peer) { - trigger (peer); + // For historical nodes, do not trigger too soon + // since a fetch pack is probably coming + if (mReason != fcHISTORY) + trigger (peer); } std::weak_ptr pmDowncast ();