Browse Source

IsInitialBlockDownload no longer uses header-only timestamps.

This avoids a corner case (mostly visible on testnet) where bogus
 headers can keep nodes in IsInitialBlockDownload.
0.14
Gregory Maxwell 8 years ago
parent
commit
e141beb6a9
  1. 9
      src/main.cpp

9
src/main.cpp

@ -1744,11 +1744,10 @@ bool IsInitialBlockDownload()
return true; return true;
if (chainActive.Tip()->nChainWork < UintToArith256(chainParams.GetConsensus().nMinimumChainWork)) if (chainActive.Tip()->nChainWork < UintToArith256(chainParams.GetConsensus().nMinimumChainWork))
return true; return true;
bool state = (chainActive.Height() < pindexBestHeader->nHeight - 24 * 6 || if (chainActive.Tip()->GetBlockTime() < (GetTime() - nMaxTipAge))
std::max(chainActive.Tip()->GetBlockTime(), pindexBestHeader->GetBlockTime()) < GetTime() - nMaxTipAge); return true;
if (!state) latchToFalse.store(true, std::memory_order_relaxed);
latchToFalse.store(true, std::memory_order_relaxed); return false;
return state;
} }
bool fLargeWorkForkFound = false; bool fLargeWorkForkFound = false;

Loading…
Cancel
Save