From a3daa061d344ea4dab2247d3e8403a9747001a9e Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 18 Jun 2012 19:56:34 -0700 Subject: [PATCH] Make sure the ledger hash is up to date when we set the immutable flag. --- src/Ledger.cpp | 9 ++++----- src/Ledger.h | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Ledger.cpp b/src/Ledger.cpp index 105f251bac..81e610c33d 100644 --- a/src/Ledger.cpp +++ b/src/Ledger.cpp @@ -108,7 +108,7 @@ Ledger::Ledger(const std::string& rawLedger) : mCloseTime(0), void Ledger::updateHash() { - if(!mImmutable) + if (!mImmutable) { if (mTransactionMap) mTransHash = mTransactionMap->getHash(); else mTransHash.zero(); @@ -235,7 +235,6 @@ uint256 Ledger::getHash() void Ledger::saveAcceptedLedger(Ledger::pointer ledger) { - std::string sql="INSERT INTO Ledgers " "(LedgerHash,LedgerSeq,PrevHash,TotalCoins,ClosingTime,AccountSetHash,TransSetHash) VALUES ('"; sql.append(ledger->getHash().GetHex()); @@ -328,10 +327,9 @@ Ledger::pointer Ledger::getSQL(const std::string& sql) uint32 ledgerSeq; std::string hash; - if(1) { - ScopedLock sl(theApp->getLedgerDB()->getDBLock()); Database *db = theApp->getLedgerDB()->getDB(); + ScopedLock sl(theApp->getLedgerDB()->getDBLock()); if (!db->executeSQL(sql) || !db->startIterRows()) return Ledger::pointer(); @@ -350,7 +348,8 @@ Ledger::pointer Ledger::getSQL(const std::string& sql) db->endIterRows(); } - Ledger::pointer ret=boost::make_shared(prevHash, transHash, accountHash, totCoins, closingTime, ledgerSeq); + Ledger::pointer ret = + boost::make_shared(prevHash, transHash, accountHash, totCoins, closingTime, ledgerSeq); if (ret->getHash() != ledgerHash) { assert(false); diff --git a/src/Ledger.h b/src/Ledger.h index cb9c4cfd15..64ae24a6d5 100644 --- a/src/Ledger.h +++ b/src/Ledger.h @@ -96,7 +96,7 @@ public: void updateHash(); void setClosed() { mClosed = true; } void setAccepted() { mAccepted = true; } - void setImmutable() { mImmutable = true; } + void setImmutable() { updateHash(); mImmutable = true; } bool isClosed() { return mClosed; } bool isAccepted() { return mAccepted; }