Fix a huge delay with --net

This commit is contained in:
JoelKatz
2013-01-04 01:10:13 -08:00
parent 4e5979564e
commit 8ace87066a

View File

@@ -369,32 +369,29 @@ void LedgerMaster::checkPublish(const uint256& hash, uint32 seq)
cLog(lsTRACE) << "Sweeping for ledgers to publish: minval=" << minVal; cLog(lsTRACE) << "Sweeping for ledgers to publish: minval=" << minVal;
// See if any later ledgers have at least the minimum number of validations // See if this ledger have at least the minimum number of validations
for (seq = mFinalizedLedger->getLedgerSeq(); seq > mLastValidateSeq; --seq) Ledger::pointer ledger = mLedgerHistory.getLedgerBySeq(seq);
{ if (ledger && (theApp->getValidations().getTrustedValidationCount(ledger->getHash()) >= minVal))
Ledger::pointer ledger = mLedgerHistory.getLedgerBySeq(seq); { // this ledger (and any priors) can be published
if (ledger && (theApp->getValidations().getTrustedValidationCount(ledger->getHash()) >= minVal)) theApp->getOPs().clearNeedNetworkLedger();
{ // this ledger (and any priors) can be published if (ledger->getLedgerSeq() > (mLastValidateSeq + MAX_LEDGER_GAP))
theApp->getOPs().clearNeedNetworkLedger(); mLastValidateSeq = ledger->getLedgerSeq() - MAX_LEDGER_GAP;
if (ledger->getLedgerSeq() > (mLastValidateSeq + MAX_LEDGER_GAP))
mLastValidateSeq = ledger->getLedgerSeq() - MAX_LEDGER_GAP;
cLog(lsTRACE) << "Ledger " << ledger->getLedgerSeq() << " can be published"; cLog(lsTRACE) << "Ledger " << ledger->getLedgerSeq() << " can be published";
for (uint32 pubSeq = mLastValidateSeq + 1; pubSeq <= seq; ++pubSeq) for (uint32 pubSeq = mLastValidateSeq + 1; pubSeq <= seq; ++pubSeq)
{
uint256 pubHash = ledger->getLedgerHash(pubSeq);
if (pubHash.isZero()) // CHECKME: Should we double-check validations in this case?
pubHash = mLedgerHistory.getLedgerHash(pubSeq);
if (pubHash.isNonZero())
{ {
uint256 pubHash = ledger->getLedgerHash(pubSeq); Ledger::pointer ledger = mLedgerHistory.getLedgerByHash(pubHash);
if (pubHash.isZero()) // CHECKME: Should we double-check validations in this case? if (ledger)
pubHash = mLedgerHistory.getLedgerHash(pubSeq);
if (pubHash.isNonZero())
{ {
Ledger::pointer ledger = mLedgerHistory.getLedgerByHash(pubHash); mPubLedgers.push_back(ledger);
if (ledger) mValidLedger = ledger;
{ mLastValidateSeq = ledger->getLedgerSeq();
mPubLedgers.push_back(ledger); mLastValidateHash = ledger->getHash();
mValidLedger = ledger;
mLastValidateSeq = ledger->getLedgerSeq();
mLastValidateHash = ledger->getHash();
}
} }
} }
} }