This commit is contained in:
Martin Zumsande 2025-03-13 02:03:19 +01:00 committed by GitHub
commit 00fca29181
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3837,9 +3837,9 @@ void Chainstate::ResetBlockFailureFlags(CBlockIndex *pindex) {
int nHeight = pindex->nHeight; int nHeight = pindex->nHeight;
// Remove the invalidity flag from this block and all its descendants. // Remove the invalidity flag from this block and all its descendants and ancestors.
for (auto& [_, block_index] : m_blockman.m_block_index) { for (auto& [_, block_index] : m_blockman.m_block_index) {
if (!block_index.IsValid() && block_index.GetAncestor(nHeight) == pindex) { if (!block_index.IsValid() && (block_index.GetAncestor(nHeight) == pindex || pindex->GetAncestor(block_index.nHeight) == &block_index)) {
block_index.nStatus &= ~BLOCK_FAILED_MASK; block_index.nStatus &= ~BLOCK_FAILED_MASK;
m_blockman.m_dirty_blockindex.insert(&block_index); m_blockman.m_dirty_blockindex.insert(&block_index);
if (block_index.IsValid(BLOCK_VALID_TRANSACTIONS) && block_index.HaveNumChainTxs() && setBlockIndexCandidates.value_comp()(m_chain.Tip(), &block_index)) { if (block_index.IsValid(BLOCK_VALID_TRANSACTIONS) && block_index.HaveNumChainTxs() && setBlockIndexCandidates.value_comp()(m_chain.Tip(), &block_index)) {
@ -3852,16 +3852,6 @@ void Chainstate::ResetBlockFailureFlags(CBlockIndex *pindex) {
m_chainman.m_failed_blocks.erase(&block_index); m_chainman.m_failed_blocks.erase(&block_index);
} }
} }
// Remove the invalidity flag from all ancestors too.
while (pindex != nullptr) {
if (pindex->nStatus & BLOCK_FAILED_MASK) {
pindex->nStatus &= ~BLOCK_FAILED_MASK;
m_blockman.m_dirty_blockindex.insert(pindex);
m_chainman.m_failed_blocks.erase(pindex);
}
pindex = pindex->pprev;
}
} }
void Chainstate::TryAddBlockIndexCandidate(CBlockIndex* pindex) void Chainstate::TryAddBlockIndexCandidate(CBlockIndex* pindex)