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;