diff options
| author | Wladimir J. van der Laan <[email protected]> | 2018-05-09 17:10:48 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2018-05-09 17:10:53 +0200 |
| commit | 08c1caf863656e8c4302f0ff392772f0055760e5 (patch) | |
| tree | b1e109fb95037574ce5fc07a167fd93b9d5290d1 /src | |
| parent | Merge #12755: [tests] Better stderr testing (diff) | |
| parent | Bugfix: the end of a reorged chain is invalid when connect fails (diff) | |
| download | discoin-08c1caf863656e8c4302f0ff392772f0055760e5.tar.xz discoin-08c1caf863656e8c4302f0ff392772f0055760e5.zip | |
Merge #13185: Bugfix: the end of a reorged chain is invalid when connect fails
a2f678d Bugfix: the end of a reorged chain is invalid when connect fails (Pieter Wuille)
Pull request description:
Introduced in 4e0eed88acdd41826868c151373068bfad18b84d
When an invalid block is found during a reorg, we know the last of the blocks in the was-to-be-connected chain is invalid, but not necessarily the first. As `vpIndexToConnect` is ordered in decreasing height, the end of the reorg is the front of the vector, and not the back.
This only affected the warning system.
Tree-SHA512: ddf749f8a78083811a5a17152723f545c1463768d09dc9832ec3682e803a3c106fb768de9fa91c03aa95e644d4e41361a7e4ee791940fd7d51cdefea90de31fc
Diffstat (limited to 'src')
| -rw-r--r-- | src/validation.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/validation.cpp b/src/validation.cpp index fc1f6477d..8a941561b 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2551,8 +2551,9 @@ bool CChainState::ActivateBestChainStep(CValidationState& state, const CChainPar if (!ConnectTip(state, chainparams, pindexConnect, pindexConnect == pindexMostWork ? pblock : std::shared_ptr<const CBlock>(), connectTrace, disconnectpool)) { if (state.IsInvalid()) { // The block violates a consensus rule. - if (!state.CorruptionPossible()) - InvalidChainFound(vpindexToConnect.back()); + if (!state.CorruptionPossible()) { + InvalidChainFound(vpindexToConnect.front()); + } state = CValidationState(); fInvalidFound = true; fContinue = false; |