diff --git a/src/Ledger.cpp b/src/Ledger.cpp index 81e610c33d..5549c23433 100644 --- a/src/Ledger.cpp +++ b/src/Ledger.cpp @@ -463,12 +463,18 @@ void Ledger::setCloseTime(boost::posix_time::ptime ptm) mCloseTime = iToSeconds(ptm); } +uint64 Ledger::sGenesisClose = 0; + uint64 Ledger::getNextLedgerClose() const { if (mCloseTime == 0) { - uint64 closeTime = theApp->getOPs().getNetworkTimeNC() + mLedgerInterval - 1; - return closeTime - (closeTime % mLedgerInterval); + if (sGenesisClose == 0) + { + uint64 closeTime = theApp->getOPs().getNetworkTimeNC() + mLedgerInterval - 1; + sGenesisClose = closeTime - (closeTime % mLedgerInterval); + } + return sGenesisClose; } return mCloseTime + mLedgerInterval; } diff --git a/src/Ledger.h b/src/Ledger.h index 1f9c8b6c60..598c148b2d 100644 --- a/src/Ledger.h +++ b/src/Ledger.h @@ -67,6 +67,8 @@ private: uint16 mLedgerInterval; bool mClosed, mValidHash, mAccepted, mImmutable; + static uint64 sGenesisClose; + SHAMap::pointer mTransactionMap, mAccountStateMap; mutable boost::recursive_mutex mLock; diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index fc6a798c0e..30c1b404f1 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -824,6 +824,7 @@ void LedgerConsensus::accept(SHAMap::pointer set) if (mValidating) { + assert (theApp->getOPs().getNetworkTimeNC() > newLCL->getCloseTimeNC()); SerializedValidation::pointer v = boost::make_shared (newLCLHash, newLCL->getCloseTimeNC(), mOurPosition->peekSeed(), true); v->setTrusted(); diff --git a/src/ValidationCollection.cpp b/src/ValidationCollection.cpp index b30ea4a00f..59b725f0d7 100644 --- a/src/ValidationCollection.cpp +++ b/src/ValidationCollection.cpp @@ -15,7 +15,7 @@ bool ValidationCollection::addValidation(SerializedValidation::pointer val) if ((now > valClose) && (now < (valClose + 2 * LEDGER_INTERVAL))) isTrusted = true; else - Log(lsWARNING) << "Received stale validation"; + Log(lsWARNING) << "Received stale validation now=" << now << ", close=" << valClose; } uint256 hash = val->getLedgerHash();