From 9d50bd8d274f07dfbad886a5cb13b587c3546323 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 18 Jul 2013 21:13:52 -0700 Subject: [PATCH] Set a validated ledger in --load mode. --- modules/ripple_app/ledger/LedgerMaster.cpp | 8 ++++++++ modules/ripple_app/ledger/LedgerMaster.h | 1 + src/cpp/ripple/ripple_Application.cpp | 1 + 3 files changed, 10 insertions(+) diff --git a/modules/ripple_app/ledger/LedgerMaster.cpp b/modules/ripple_app/ledger/LedgerMaster.cpp index 82f1434929..a775195ab3 100644 --- a/modules/ripple_app/ledger/LedgerMaster.cpp +++ b/modules/ripple_app/ledger/LedgerMaster.cpp @@ -157,6 +157,14 @@ void LedgerMaster::storeLedger (Ledger::pointer ledger) mLedgerHistory.addAcceptedLedger (ledger, false); } +void LedgerMaster::forceValid (Ledger::pointer ledger) +{ + if (!mValidLedger || (mPubLedger->getLedgerSeq() < ledger->getLedgerSeq())) + mValidLedger = ledger; + if (!mPubLedger || (mPubLedger->getLedgerSeq() < 2)) + mPubLedger = ledger; +} + Ledger::pointer LedgerMaster::closeLedger (bool recover) { boost::recursive_mutex::scoped_lock sl (mLock); diff --git a/modules/ripple_app/ledger/LedgerMaster.h b/modules/ripple_app/ledger/LedgerMaster.h index d000566ae5..847d62e6ee 100644 --- a/modules/ripple_app/ledger/LedgerMaster.h +++ b/modules/ripple_app/ledger/LedgerMaster.h @@ -88,6 +88,7 @@ public: void pushLedger (Ledger::pointer newLedger); void pushLedger (Ledger::pointer newLCL, Ledger::pointer newOL, bool fromConsensus); void storeLedger (Ledger::pointer); + void forceValid (Ledger::pointer); void setFullLedger (Ledger::pointer ledger); diff --git a/src/cpp/ripple/ripple_Application.cpp b/src/cpp/ripple/ripple_Application.cpp index 0b147fc6ff..9749eb98be 100644 --- a/src/cpp/ripple/ripple_Application.cpp +++ b/src/cpp/ripple/ripple_Application.cpp @@ -796,6 +796,7 @@ bool ApplicationImp::loadOldLedger (const std::string& l, bool bReplay) Ledger::pointer openLedger = boost::make_shared (false, boost::ref (*loadLedger)); mLedgerMaster.switchLedgers (loadLedger, openLedger); + mLedgerMaster.forceValid(loadLedger); mNetOps.setLastCloseTime (loadLedger->getCloseTimeNC ()); if (bReplay)