From b4e63c30254769b4da03480a4e27acced7ab5fd1 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Tue, 7 Aug 2012 04:11:20 -0700 Subject: [PATCH] Fix a few cases where we reset the acquire timer when we should not. --- src/LedgerAcquire.cpp | 19 +++++++++---------- src/LedgerAcquire.h | 4 ++-- src/LedgerConsensus.cpp | 6 +++--- src/LedgerConsensus.h | 6 +++--- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index bc065606e..95c4d287e 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -102,7 +102,7 @@ void LedgerAcquire::onTimer() setFailed(); done(); } - else trigger(Peer::pointer()); + else trigger(Peer::pointer(), true); } boost::weak_ptr LedgerAcquire::pmDowncast() @@ -140,7 +140,7 @@ void LedgerAcquire::addOnComplete(boost::function mLock.unlock(); } -void LedgerAcquire::trigger(Peer::pointer peer) +void LedgerAcquire::trigger(Peer::pointer peer, bool timer) { if (mAborted || mComplete || mFailed) return; @@ -159,10 +159,9 @@ void LedgerAcquire::trigger(Peer::pointer peer) tmGL.set_itype(newcoin::liBASE); *(tmGL.add_nodeids()) = SHAMapNode().getRawString(); sendRequest(tmGL, peer); - return; // Cannot go on without base } - if (!mHaveTransactions) + if (mHaveBase && !mHaveTransactions) { #ifdef LA_DEBUG Log(lsTRACE) << "need tx"; @@ -206,7 +205,7 @@ void LedgerAcquire::trigger(Peer::pointer peer) } } - if (!mHaveState) + if (mHaveBase && !mHaveState) { #ifdef LA_DEBUG Log(lsTRACE) << "need as"; @@ -252,7 +251,7 @@ void LedgerAcquire::trigger(Peer::pointer peer) if (mComplete || mFailed) done(); - else + else if (timer) resetTimer(); } @@ -460,7 +459,7 @@ bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet, Peer::poi return false; if (packet.nodes_size() == 1) { - ledger->trigger(peer); + ledger->trigger(peer, false); return true; } if (!ledger->takeAsRootNode(strCopy(packet.nodes(1).nodedata()))) @@ -469,12 +468,12 @@ bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet, Peer::poi } if (packet.nodes().size() == 2) { - ledger->trigger(peer); + ledger->trigger(peer, false); return true; } if (!ledger->takeTxRootNode(strCopy(packet.nodes(2).nodedata()))) Log(lsWARNING) << "Invcluded TXbase invalid"; - ledger->trigger(peer); + ledger->trigger(peer, false); return true; } @@ -498,7 +497,7 @@ bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet, Peer::poi else ret = ledger->takeAsNode(nodeIDs, nodeData); if (ret) - ledger->trigger(peer); + ledger->trigger(peer, false); return ret; } diff --git a/src/LedgerAcquire.h b/src/LedgerAcquire.h index fbcac6c7e..1497ca41a 100644 --- a/src/LedgerAcquire.h +++ b/src/LedgerAcquire.h @@ -72,7 +72,7 @@ protected: void done(); void onTimer(); - void newPeer(Peer::pointer peer) { trigger(peer); } + void newPeer(Peer::pointer peer) { trigger(peer, false); } boost::weak_ptr pmDowncast(); @@ -92,7 +92,7 @@ public: bool takeTxRootNode(const std::vector& data); bool takeAsNode(const std::list& IDs, const std::list >& data); bool takeAsRootNode(const std::vector& data); - void trigger(Peer::pointer); + void trigger(Peer::pointer, bool timer); }; class LedgerAcquireMaster diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index 440be88ee..2549ecfb8 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -36,7 +36,7 @@ boost::weak_ptr TransactionAcquire::pmDowncast() return boost::shared_polymorphic_downcast(shared_from_this()); } -void TransactionAcquire::trigger(Peer::pointer peer) +void TransactionAcquire::trigger(Peer::pointer peer, bool timer) { if (mComplete || mFailed) return; @@ -76,7 +76,7 @@ void TransactionAcquire::trigger(Peer::pointer peer) } if (mComplete || mFailed) done(); - else + else if (timer) resetTimer(); } @@ -110,7 +110,7 @@ bool TransactionAcquire::takeNodes(const std::list& nodeIDs, ++nodeIDit; ++nodeDatait; } - trigger(peer); + trigger(peer, false); progress(); return true; } diff --git a/src/LedgerConsensus.h b/src/LedgerConsensus.h index 205a75cd1..7e104a43b 100644 --- a/src/LedgerConsensus.h +++ b/src/LedgerConsensus.h @@ -27,11 +27,11 @@ protected: SHAMap::pointer mMap; bool mHaveRoot; - void onTimer() { trigger(Peer::pointer()); } - void newPeer(Peer::pointer peer) { trigger(peer); } + void onTimer() { trigger(Peer::pointer(), true); } + void newPeer(Peer::pointer peer) { trigger(peer, false); } void done(); - void trigger(Peer::pointer); + void trigger(Peer::pointer, bool timer); boost::weak_ptr pmDowncast(); public: