diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index c7c1036aa..90661d7bc 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -155,8 +155,6 @@ void LedgerMaster::storeLedger (Ledger::pointer ledger) if (ledger->isAccepted ()) mLedgerHistory.addAcceptedLedger (ledger, false); - - checkAccept (ledger->getHash(), ledger->getLedgerSeq()); } Ledger::pointer LedgerMaster::closeLedger (bool recover) diff --git a/src/cpp/ripple/ripple_InboundLedger.cpp b/src/cpp/ripple/ripple_InboundLedger.cpp index 8f00910b1..e9101345d 100644 --- a/src/cpp/ripple/ripple_InboundLedger.cpp +++ b/src/cpp/ripple/ripple_InboundLedger.cpp @@ -236,6 +236,9 @@ static void LADispatch ( InboundLedger::pointer la, std::vector< FUNCTION_TYPE > trig) { + Ledger::ref ledger = la->getLedger(); + if (ledger) + getApp().getLedgerMaster().checkAccept (ledger->getHash(), ledger->getLedgerSeq()); for (unsigned int i = 0; i < trig.size (); ++i) trig[i] (la); } @@ -273,9 +276,9 @@ void InboundLedger::done () else getApp().getInboundLedgers ().logFailure (mHash); - if (!triggers.empty ()) // We hold the PeerSet lock, so must dispatch - getApp().getJobQueue ().addJob (jtLEDGER_DATA, "triggers", - BIND_TYPE (LADispatch, P_1, shared_from_this (), triggers)); + // We hold the PeerSet lock, so must dispatch + getApp().getJobQueue ().addJob (jtLEDGER_DATA, "triggers", + BIND_TYPE (LADispatch, P_1, shared_from_this (), triggers)); } bool InboundLedger::addOnComplete (FUNCTION_TYPE trigger) diff --git a/src/cpp/ripple/ripple_InboundLedgers.cpp b/src/cpp/ripple/ripple_InboundLedgers.cpp index 14cc07fbf..2bd0f82be 100644 --- a/src/cpp/ripple/ripple_InboundLedgers.cpp +++ b/src/cpp/ripple/ripple_InboundLedgers.cpp @@ -225,16 +225,21 @@ int InboundLedgers::getFetchCount (int& timeoutCount) { timeoutCount = 0; int ret = 0; + + std::map inboundLedgers; + { - typedef std::pair u256_acq_pair; boost::mutex::scoped_lock sl (mLock); - BOOST_FOREACH (const u256_acq_pair & it, mLedgers) + inboundLedgers = mLedgers; + } + + typedef std::pair u256_acq_pair; + BOOST_FOREACH (const u256_acq_pair & it, inboundLedgers) + { + if (it.second->isActive ()) { - if (it.second->isActive ()) - { - ++ret; - timeoutCount += it.second->getTimeouts (); - } + ++ret; + timeoutCount += it.second->getTimeouts (); } } return ret;