diff --git a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp index 40c1dd3b0..5129d893b 100644 --- a/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp +++ b/src/ripple/app/ledger/impl/LedgerConsensusImp.cpp @@ -298,6 +298,13 @@ LedgerConsensusImp::LedgerConsensusImp ( // update the network status table as to whether we're // proposing/validating consensus_.setProposing (mProposing, mValidating); + + playbackProposals (); + if (mPeerPositions.size () > (mPreviousProposers / 2)) + { + // We may be falling behind, don't wait for the timer + timerEntry (); + } } Json::Value LedgerConsensusImp::getJson (bool full) @@ -976,8 +983,6 @@ void LedgerConsensusImp::accept (std::shared_ptr set) consensus_.takePosition (mPreviousLedger->info().seq, set); assert (set->getHash () == mOurPosition->getCurrentHash ()); - // these are now obsolete - consensus_.peekStoredProposals ().clear (); } auto closeTime = mOurPosition->getCloseTime(); diff --git a/src/ripple/app/misc/NetworkOPs.cpp b/src/ripple/app/misc/NetworkOPs.cpp index 93e132c9f..dc18ee32c 100644 --- a/src/ripple/app/misc/NetworkOPs.cpp +++ b/src/ripple/app/misc/NetworkOPs.cpp @@ -1384,6 +1384,9 @@ void NetworkOPsImp::processTrustedProposal ( bool relay = true; + if (mConsensus) + mConsensus->storeProposal (proposal, nodePublic); + if (!haveConsensusObject ()) { m_journal.info << "Received proposal outside consensus window"; @@ -1393,8 +1396,6 @@ void NetworkOPsImp::processTrustedProposal ( } else { - mConsensus->storeProposal (proposal, nodePublic); - if (mLedgerConsensus->getLCL () == proposal->getPrevLedger ()) { relay = mLedgerConsensus->peerPosition (proposal);