From 806a02552334e288bec145345be2a32ba9221786 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 24 Oct 2012 12:56:49 -0700 Subject: [PATCH] Small bugfixes. --- src/Application.cpp | 2 +- src/LedgerAcquire.cpp | 33 +++++++++++++++++---------------- src/LedgerConsensus.cpp | 2 +- src/LedgerMaster.cpp | 4 ++-- src/LedgerMaster.h | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/Application.cpp b/src/Application.cpp index c1b80e4ca..6000fe40e 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -211,7 +211,7 @@ void Application::startNewLedger() Ledger::pointer secondLedger = boost::make_shared(true, boost::ref(*firstLedger)); secondLedger->setClosed(); secondLedger->setAccepted(); - mMasterLedger.pushLedger(secondLedger, boost::make_shared(true, boost::ref(*secondLedger))); + mMasterLedger.pushLedger(secondLedger, boost::make_shared(true, boost::ref(*secondLedger)), false); assert(!!secondLedger->getAccountState(rootAddress)); mNetOps.setLastCloseTime(secondLedger->getCloseTimeNC()); } diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 67faba317..a7e13f23b 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -580,10 +580,9 @@ bool LedgerAcquireMaster::gotLedgerData(ripple::TMLedgerData& packet, Peer::ref return false; } -LedgerAcquireSet::LedgerAcquireSet(Ledger::ref targetLedger, Ledger::ref currentLedger) : +LedgerAcquireSet::LedgerAcquireSet(Ledger::ref targetLedger) : mTargetLedger(targetLedger), mCheckComplete(true) { - updateCurrentLedger(currentLedger); } void LedgerAcquireSet::updateCurrentLedger(Ledger::pointer currentLedger) @@ -591,23 +590,25 @@ void LedgerAcquireSet::updateCurrentLedger(Ledger::pointer currentLedger) while (1) { - - if ((currentLedger->getHash() == mTargetLedger->getHash()) || - (currentLedger->getParentHash() == mTargetLedger->getHash())) - { // We have completed acquiring the set - done(); - return; - } - - while (mTargetLedger->getLedgerSeq() >= currentLedger->getLedgerSeq()) - { // We need to back up our target - mTargetLedger = theApp->getMasterLedger().getLedgerByHash(mTargetLedger->getParentHash()); - if (!mTargetLedger) - { - cLog(lsWARNING) << "LedgerAcquireSet encountered a non-present target ledger"; + if (mTargetLedger) + { + if ((currentLedger->getHash() == mTargetLedger->getHash()) || + (currentLedger->getParentHash() == mTargetLedger->getHash())) + { // We have completed acquiring the set done(); return; } + + while (mTargetLedger->getLedgerSeq() >= currentLedger->getLedgerSeq()) + { // We need to back up our target + mTargetLedger = theApp->getMasterLedger().getLedgerByHash(mTargetLedger->getParentHash()); + if (!mTargetLedger) + { + cLog(lsWARNING) << "LedgerAcquireSet encountered a non-present target ledger"; + done(); + return; + } + } } Ledger::pointer nextLedger = diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index afaf29cfe..7a655a5b4 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -1186,7 +1186,7 @@ void LedgerConsensus::accept(SHAMap::ref set) cLog(lsINFO) << "Applying transactions from current ledger"; applyTransactions(theApp->getMasterLedger().getCurrentLedger()->peekTransactionMap(), newOL, newLCL, failedTransactions, true); - theApp->getMasterLedger().pushLedger(newLCL, newOL); + theApp->getMasterLedger().pushLedger(newLCL, newOL, true); mNewLedgerHash = newLCL->getHash(); mState = lcsACCEPTED; sl.unlock(); diff --git a/src/LedgerMaster.cpp b/src/LedgerMaster.cpp index 603ab30fe..87d52e4f7 100644 --- a/src/LedgerMaster.cpp +++ b/src/LedgerMaster.cpp @@ -38,7 +38,7 @@ void LedgerMaster::pushLedger(Ledger::ref newLedger) mLastFullLedger = newLedger; } -void LedgerMaster::pushLedger(Ledger::ref newLCL, Ledger::ref newOL) +void LedgerMaster::pushLedger(Ledger::ref newLCL, Ledger::ref newOL, bool fromConsensus) { assert(newLCL->isClosed() && newLCL->isAccepted()); assert(!newOL->isClosed() && !newOL->isAccepted()); @@ -47,7 +47,7 @@ void LedgerMaster::pushLedger(Ledger::ref newLCL, Ledger::ref newOL) { assert(newLCL->isClosed()); assert(newLCL->isImmutable()); - mLedgerHistory.addAcceptedLedger(newLCL, false); + mLedgerHistory.addAcceptedLedger(newLCL, fromConsensus); if (mLastFullLedger && (newLCL->getParentHash() == mLastFullLedger->getHash())) mLastFullLedger = newLCL; cLog(lsINFO) << "StashAccepted: " << newLCL->getHash(); diff --git a/src/LedgerMaster.h b/src/LedgerMaster.h index 47cf394b5..8382f60b6 100644 --- a/src/LedgerMaster.h +++ b/src/LedgerMaster.h @@ -47,7 +47,7 @@ public: TER doTransaction(const SerializedTransaction& txn, TransactionEngineParams params); void pushLedger(Ledger::ref newLedger); - void pushLedger(Ledger::ref newLCL, Ledger::ref newOL); + void pushLedger(Ledger::ref newLCL, Ledger::ref newOL, bool fromConsensus); void storeLedger(Ledger::ref); void setLastFullLedger(Ledger::ref ledger)