mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-05 08:48:03 +00:00
Be more robust about storing/replaying proposals:
Store a proposal even if it arrives outside a round. Make sure we catch up on any missed proposals as we start a round.
This commit is contained in:
@@ -1489,6 +1489,11 @@ void NetworkOPsImp::processTrustedProposal (
|
||||
|
||||
bool relay = true;
|
||||
|
||||
if (mConsensus)
|
||||
mConsensus->storeProposal (proposal, nodePublic);
|
||||
else
|
||||
m_journal.warning << "Unable to store proposal";
|
||||
|
||||
if (!haveConsensusObject ())
|
||||
{
|
||||
m_journal.info << "Received proposal outside consensus window";
|
||||
@@ -1496,17 +1501,15 @@ void NetworkOPsImp::processTrustedProposal (
|
||||
if (mMode == omFULL)
|
||||
relay = false;
|
||||
}
|
||||
else
|
||||
else if (mLedgerConsensus->getLCL () == proposal->getPrevLedger ())
|
||||
{
|
||||
mConsensus->storeProposal (proposal, nodePublic);
|
||||
|
||||
if (mLedgerConsensus->getLCL () == proposal->getPrevLedger ())
|
||||
{
|
||||
relay = mLedgerConsensus->peerPosition (proposal);
|
||||
m_journal.trace
|
||||
<< "Proposal processing finished, relay=" << relay;
|
||||
}
|
||||
relay = mLedgerConsensus->peerPosition (proposal);
|
||||
m_journal.trace
|
||||
<< "Proposal processing finished, relay=" << relay;
|
||||
}
|
||||
else
|
||||
m_journal.debug << "Got proposal for " << proposal->getPrevLedger ()
|
||||
<< " but we are on " << mLedgerConsensus->getLCL();
|
||||
|
||||
if (relay)
|
||||
app_.overlay().relay(*set, proposal->getSuppressionID());
|
||||
|
||||
Reference in New Issue
Block a user