mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
validation: correctly update BlockStatus for invalid block descendants
invalid_block ----------> block_index - before this commit, only if block_index is not invalid, it will mark block_index as BLOCK_FAILED_CHILD - it's possible that block_index encountered is invalid and was marked as BLOCK_FAILED_VALID previously - in this case, correctly update BlockStatus of block_index by clearing BLOCK_FAILED_VALID and then setting it to BLOCK_FAILED_CHILD
This commit is contained in:
parent
9e29653b42
commit
aac5488909
1 changed files with 3 additions and 2 deletions
|
@ -3826,8 +3826,9 @@ void Chainstate::SetBlockFailureFlags(CBlockIndex* invalid_block)
|
||||||
AssertLockHeld(cs_main);
|
AssertLockHeld(cs_main);
|
||||||
|
|
||||||
for (auto& [_, block_index] : m_blockman.m_block_index) {
|
for (auto& [_, block_index] : m_blockman.m_block_index) {
|
||||||
if (block_index.GetAncestor(invalid_block->nHeight) == invalid_block && !(block_index.nStatus & BLOCK_FAILED_MASK)) {
|
if (invalid_block != &block_index && block_index.GetAncestor(invalid_block->nHeight) == invalid_block) {
|
||||||
block_index.nStatus |= BLOCK_FAILED_CHILD;
|
block_index.nStatus = (block_index.nStatus & ~BLOCK_FAILED_VALID) | BLOCK_FAILED_CHILD;
|
||||||
|
m_blockman.m_dirty_blockindex.insert(&block_index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue