From d6529b69271557207e7d7dcda331fa88ad24507d Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 10 May 2012 17:17:45 -0700 Subject: [PATCH] Fix some cases where we acquire the ledger but don't realize it. --- src/LedgerAcquire.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index d90e3d2d8..4ef3eacb8 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -59,9 +59,11 @@ void LedgerAcquire::trigger() { #ifdef DEBUG std::cerr << "Trigger acquiring ledger " << mHash.GetHex() << std::endl; + std::cerr << "complete=" << mComplete << " failed=" << mFailed << std::endl; + std::cerr << "base=" << mHaveBase << " tx=" << mHaveTransactions << " as=" << mHaveState << std::endl; #endif - if (mComplete || mFailed) return; - + if (mComplete || mFailed) + return; if (!mHaveBase) { #ifdef DEBUG @@ -233,6 +235,10 @@ bool LedgerAcquire::takeBase(const std::string& data) mLedger = boost::make_shared(data); if (mLedger->getHash() != mHash) { +#ifdef DEBUG + std::cerr << "Acquire hash mismatch" << std::endl; + std::cerr << mLedger->getHash().GetHex() << "!=" << mHash.GetHex() << std::endl; +#endif mLedger = Ledger::pointer(); return false; } @@ -261,7 +267,10 @@ bool LedgerAcquire::takeTxNode(const std::list& nodeIDs, ++nodeIDit; ++nodeDatait; } - if (!mLedger->peekTransactionMap()->isSynching()) mHaveTransactions = true; + if (!mLedger->peekTransactionMap()->isSynching()) + { + mHaveTransactions = true; + if (mHaveState) mComplete = true; return true; } @@ -286,7 +295,11 @@ bool LedgerAcquire::takeAsNode(const std::list& nodeIDs, ++nodeIDit; ++nodeDatait; } - if (!mLedger->peekAccountStateMap()->isSynching()) mHaveState = true; + if (!mLedger->peekAccountStateMap()->isSynching()) + { + mHaveState = true; + if (mHaveTransactions) mComplete = true; + } return true; }