From e373a58f5c82a35f88799405cd043dff1018f20f Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 2 Aug 2012 11:50:59 -0700 Subject: [PATCH] Avoid duplicate completion of acquired ledgers. --- src/LedgerAcquire.cpp | 5 ++++- src/LedgerAcquire.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 1f88aecff9..d04a952ef6 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -88,7 +88,7 @@ void PeerSet::TimerEntry(boost::weak_ptr wptr, const boost::system::err } LedgerAcquire::LedgerAcquire(const uint256& hash) : PeerSet(hash, LEDGER_ACQUIRE_TIMEOUT), - mHaveBase(false), mHaveState(false), mHaveTransactions(false), mAborted(false) + mHaveBase(false), mHaveState(false), mHaveTransactions(false), mAborted(false), mSignaled(false) { #ifdef LA_DEBUG Log(lsTRACE) << "Acquiring ledger " << mHash.GetHex(); @@ -112,6 +112,9 @@ boost::weak_ptr LedgerAcquire::pmDowncast() void LedgerAcquire::done() { + if (mSignaled) + return; + mSignaled = true; #ifdef LA_DEBUG Log(lsTRACE) << "Done acquiring ledger " << mHash.GetHex(); #endif diff --git a/src/LedgerAcquire.h b/src/LedgerAcquire.h index 5409d63c17..fbcac6c7e3 100644 --- a/src/LedgerAcquire.h +++ b/src/LedgerAcquire.h @@ -65,7 +65,7 @@ public: protected: Ledger::pointer mLedger; - bool mHaveBase, mHaveState, mHaveTransactions, mAborted; + bool mHaveBase, mHaveState, mHaveTransactions, mAborted, mSignaled; std::vector< boost::function > mOnComplete;