Same as InvalidChainFound, above, except not called directly from InvalidateBlock, which does its own setBlockIndexCandidates management.
| 1992 | // Same as InvalidChainFound, above, except not called directly from InvalidateBlock, |
| 1993 | // which does its own setBlockIndexCandidates management. |
| 1994 | void Chainstate::InvalidBlockFound(CBlockIndex* pindex, const BlockValidationState& state) |
| 1995 | { |
| 1996 | AssertLockHeld(cs_main); |
| 1997 | if (state.GetResult() != BlockValidationResult::BLOCK_MUTATED) { |
| 1998 | pindex->nStatus |= BLOCK_FAILED_VALID; |
| 1999 | m_blockman.m_dirty_blockindex.insert(pindex); |
| 2000 | setBlockIndexCandidates.erase(pindex); |
| 2001 | InvalidChainFound(pindex); |
| 2002 | } |
| 2003 | } |
| 2004 | |
| 2005 | void UpdateCoins(const CTransaction& tx, CCoinsViewCache& inputs, CTxUndo &txundo, int nHeight) |
| 2006 | { |
no test coverage detected