Fix the bug Jed reported where our second closed ledger has a close time in the past which

crashes the CLC timing code.
This commit is contained in:
JoelKatz
2012-08-10 10:51:35 -07:00
parent e3c77d2c0c
commit 5b431ea4f6
2 changed files with 10 additions and 8 deletions

View File

@@ -71,7 +71,7 @@ Ledger::Ledger(bool dummy, Ledger& prevLedger) :
prevLedger.getCloseAgree(), mLedgerSeq);
if (prevLedger.mCloseTime == 0)
{
mCloseTime = theApp->getOPs().getCloseTimeNC();
mCloseTime = theApp->getOPs().getCloseTimeNC() - mCloseResolution;
mCloseTime -= (mCloseTime % mCloseResolution);
}
else

View File

@@ -19,13 +19,15 @@ int ContinuousLedgerTiming::shouldClose(
int previousMSeconds, // seconds the previous ledger took to reach consensus
int currentMSeconds) // seconds since the previous ledger closed
{
assert((previousMSeconds > -1000) && (previousMSeconds < 600000));
assert((currentMSeconds >= -1000) && (currentMSeconds < 600000));
#if 0
Log(lsTRACE) << boost::str(boost::format("CLC::shouldClose Trans=%s, Prop: %d/%d, Secs: %d (last:%d)") %
(anyTransactions ? "yes" : "no") % previousProposers % proposersClosed % currentMSeconds % previousMSeconds);
#endif
if ((previousMSeconds < -1000) || (previousMSeconds > 600000) ||
(currentMSeconds < -1000) || (currentMSeconds > 600000))
{
Log(lsFATAL) <<
boost::str(boost::format("CLC::shouldClose range error Trans=%s, Prop: %d/%d, Secs: %d (last:%d)")
% (anyTransactions ? "yes" : "no") % previousProposers % proposersClosed
% currentMSeconds % previousMSeconds);
return currentMSeconds;
}
if (!anyTransactions)
{ // no transactions so far this interval