From 07d16f280cccc289120047a389efe0aa85d5c866 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 22 Jan 2014 17:09:52 -0800 Subject: [PATCH] Clean up the checkAccept path to use the ledger sequence --- src/ripple_app/ledger/LedgerMaster.cpp | 8 +++++++- src/ripple_app/ledger/LedgerMaster.h | 2 +- src/ripple_app/misc/Validations.cpp | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ripple_app/ledger/LedgerMaster.cpp b/src/ripple_app/ledger/LedgerMaster.cpp index d4b29c288..f2744eddb 100644 --- a/src/ripple_app/ledger/LedgerMaster.cpp +++ b/src/ripple_app/ledger/LedgerMaster.cpp @@ -614,12 +614,18 @@ public: getApp().getInboundLedgers().findCreate(hash, seq, true); } - void checkAccept (uint256 const& hash) + void checkAccept (uint256 const& hash, uint32 seq) { + if ((seq == 0) && (seq <= mValidLedgerSeq)) + return; + Ledger::pointer ledger = mLedgerHistory.getLedgerByHash (hash); if (!ledger) { + // FIXME: We should really only fetch if the ledger + //has sufficient validations to accept it + InboundLedger::pointer l = getApp().getInboundLedgers().findCreateValidationLedger(hash); if (l && l->isComplete() && !l->isFailed()) ledger = l->getLedger(); diff --git a/src/ripple_app/ledger/LedgerMaster.h b/src/ripple_app/ledger/LedgerMaster.h index 9038527dd..8eb423dbb 100644 --- a/src/ripple_app/ledger/LedgerMaster.h +++ b/src/ripple_app/ledger/LedgerMaster.h @@ -122,7 +122,7 @@ public: virtual void addValidateCallback (callback& c) = 0; virtual void checkAccept (Ledger::ref ledger) = 0; - virtual void checkAccept (uint256 const& hash) = 0; + virtual void checkAccept (uint256 const& hash, uint32 seq) = 0; virtual void tryAdvance () = 0; virtual void newPathRequest () = 0; diff --git a/src/ripple_app/misc/Validations.cpp b/src/ripple_app/misc/Validations.cpp index fa863837c..ee9914d61 100644 --- a/src/ripple_app/misc/Validations.cpp +++ b/src/ripple_app/misc/Validations.cpp @@ -126,7 +126,7 @@ private: << " added " << (val->isTrusted () ? "trusted/" : "UNtrusted/") << (isCurrent ? "current" : "stale"); if (val->isTrusted () && isCurrent) - getApp().getLedgerMaster ().checkAccept (hash); + getApp().getLedgerMaster ().checkAccept (hash, val->getFieldU32 (sfLedgerSequence)); // FIXME: This never forwards untrusted validations return isCurrent;