mirror of https://github.com/bitcoin/bitcoin.git
Merge 04b943b63c
into b510893d00
This commit is contained in:
commit
0cb1f9e221
|
@ -2956,6 +2956,12 @@ void PeerManagerImpl::ProcessHeadersMessage(CNode& pfrom, Peer& peer,
|
|||
state, &pindexLast)};
|
||||
if (!processed) {
|
||||
if (state.IsInvalid()) {
|
||||
if (!pfrom.IsInboundConn() && state.GetResult() == BlockValidationResult::BLOCK_CACHED_INVALID) {
|
||||
LogWarning("Header received from peer=%i was previously marked as invalid. "
|
||||
"If this happens with all peers, database corruption is likely and "
|
||||
"-reindex may be necessary to recover.",
|
||||
pfrom.GetId());
|
||||
}
|
||||
MaybePunishNodeForBlock(pfrom.GetId(), state, via_compact_block, "invalid header received");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -2023,15 +2023,12 @@ void Chainstate::CheckForkWarningConditions()
|
|||
{
|
||||
AssertLockHeld(cs_main);
|
||||
|
||||
// Before we get past initial download, we cannot reliably alert about forks
|
||||
// (we assume we don't get stuck on a fork before finishing our initial sync)
|
||||
// Also not applicable to the background chainstate
|
||||
if (m_chainman.IsInitialBlockDownload() || this->GetRole() == ChainstateRole::BACKGROUND) {
|
||||
if (this->GetRole() == ChainstateRole::BACKGROUND) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_chainman.m_best_invalid && m_chainman.m_best_invalid->nChainWork > m_chain.Tip()->nChainWork + (GetBlockProof(*m_chain.Tip()) * 6)) {
|
||||
LogPrintf("%s: Warning: Found invalid chain at least ~6 blocks longer than our best chain.\nChain state database corruption likely.\n", __func__);
|
||||
LogWarning("Found invalid chain at least ~6 blocks longer than our best chain. Chain state database corruption likely.");
|
||||
m_chainman.GetNotifications().warningSet(
|
||||
kernel::Warning::LARGE_WORK_INVALID_CHAIN,
|
||||
_("Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade."));
|
||||
|
@ -4674,6 +4671,8 @@ bool Chainstate::LoadChainTip()
|
|||
/*verification_progress=*/m_chainman.GuessVerificationProgress(tip));
|
||||
}
|
||||
|
||||
CheckForkWarningConditions();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue