From 382a16ff07a0ebc81ed712445be8babd74bd7f08 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 10 Feb 2015 00:18:02 -0800 Subject: [PATCH] Avoid excess ledger header requests --- src/ripple/app/ledger/InboundLedger.cpp | 14 ++++++++------ src/ripple/app/ledger/InboundLedger.h | 5 ++++- 2 files changed, 12 insertions(+), 7 deletions(-) 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 ();