aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2018-05-09 17:10:48 +0200
committerWladimir J. van der Laan <[email protected]>2018-05-09 17:10:53 +0200
commit08c1caf863656e8c4302f0ff392772f0055760e5 (patch)
treeb1e109fb95037574ce5fc07a167fd93b9d5290d1 /src
parentMerge #12755: [tests] Better stderr testing (diff)
parentBugfix: the end of a reorged chain is invalid when connect fails (diff)
downloaddiscoin-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.cpp5
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;