From a8cdd4f66df34bf32b37b331668254563e5a365e Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 3 Dec 2015 16:36:20 -0800 Subject: [PATCH] Must hold lock to call LedgerConsensusImp::getJson. --- src/ripple/app/ledger/impl/LedgerConsensusImp.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp index ff06a209a5..d206a4aff8 100644 --- a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp +++ b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp @@ -971,6 +971,8 @@ void LedgerConsensusImp::simulate () void LedgerConsensusImp::accept (std::shared_ptr set) { + Json::Value consensusStatus; + { auto lock = beast::make_lock(app_.getMasterMutex()); @@ -979,6 +981,7 @@ void LedgerConsensusImp::accept (std::shared_ptr set) consensus_.takePosition (mPreviousLedger->info().seq, set); assert (set->getHash ().as_uint256() == mOurPosition->getCurrentHash ()); + consensusStatus = getJson (true); } auto closeTime = mOurPosition->getCloseTime (); @@ -1135,7 +1138,7 @@ void LedgerConsensusImp::accept (std::shared_ptr set) << "CNF newLCL " << newLCLHash; // See if we can accept a ledger as fully-validated - ledgerMaster_.consensusBuilt (newLCL, getJson (true)); + ledgerMaster_.consensusBuilt (newLCL, std::move (consensusStatus)); { // Apply disputed transactions that didn't get in