From befd7aa108b5cdf63857959e93d6c86c989406fa Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 2 Aug 2012 11:34:11 -0700 Subject: [PATCH] Fix an infinite timeout scenario with ledger acquisition. --- src/LedgerAcquire.cpp | 10 ++++++++++ src/LedgerAcquire.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 088c8c6638..090ee616ac 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -95,6 +95,16 @@ LedgerAcquire::LedgerAcquire(const uint256& hash) : PeerSet(hash, LEDGER_ACQUIRE #endif } +void LedgerAcquire::onTimer() +{ + if (getTimeouts() > 6) + { + setFailed(); + done(); + } + else trigger(Peer::pointer()); +} + boost::weak_ptr LedgerAcquire::pmDowncast() { return boost::shared_polymorphic_downcast(shared_from_this()); diff --git a/src/LedgerAcquire.h b/src/LedgerAcquire.h index 62540172b3..5409d63c17 100644 --- a/src/LedgerAcquire.h +++ b/src/LedgerAcquire.h @@ -70,7 +70,7 @@ protected: std::vector< boost::function > mOnComplete; void done(); - void onTimer() { trigger(Peer::pointer()); } + void onTimer(); void newPeer(Peer::pointer peer) { trigger(peer); }