From 7f6305a6ab49ee2c2d43f6e56c0ccbefc7f4ac42 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 5 Mar 2013 06:46:30 -0800 Subject: [PATCH] Fix a race condition. --- src/cpp/ripple/LedgerMaster.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index 65ee67dad3..70c2f287cc 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -165,7 +165,10 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger) { if (theApp->isShutdown()) return; - mCompleteLedgers.setRange(minHas, maxHas); + { + boost::recursive_mutex::scoped_lock ml(mLock); + mCompleteLedgers.setRange(minHas, maxHas); + } maxHas = minHas; ledgerHashes = Ledger::getHashesByIndex((seq < 500) ? 0 : (seq - 499), seq); it = ledgerHashes.find(seq); @@ -177,7 +180,11 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger) break; prevHash = it->second.second; } - mCompleteLedgers.setRange(minHas, maxHas); + + { + boost::recursive_mutex::scoped_lock ml(mLock); + mCompleteLedgers.setRange(minHas, maxHas); + } resumeAcquiring(); }