Make sure the ledger hash is up to date when we set the immutable flag.

This commit is contained in:
JoelKatz
2012-06-18 19:56:34 -07:00
parent 87324c828d
commit a3daa061d3
2 changed files with 5 additions and 6 deletions

View File

@@ -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<Ledger>(prevHash, transHash, accountHash, totCoins, closingTime, ledgerSeq);
Ledger::pointer ret =
boost::make_shared<Ledger>(prevHash, transHash, accountHash, totCoins, closingTime, ledgerSeq);
if (ret->getHash() != ledgerHash)
{
assert(false);

View File

@@ -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; }