Browse Source

Merge pull request #4496

5734d4d Only remove actualy failed blocks from setBlockIndexValid (Pieter Wuille)
0.10
Wladimir J. van der Laan 10 years ago
parent
commit
70d0325999
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 3
      src/main.cpp

3
src/main.cpp

@ -2016,7 +2016,7 @@ static CBlockIndex* FindMostWorkChain() {
CBlockIndex *pindexTest = pindexNew; CBlockIndex *pindexTest = pindexNew;
bool fInvalidAncestor = false; bool fInvalidAncestor = false;
while (pindexTest && !chainActive.Contains(pindexTest)) { while (pindexTest && !chainActive.Contains(pindexTest)) {
if (!pindexTest->IsValid(BLOCK_VALID_TRANSACTIONS) || !(pindexTest->nStatus & BLOCK_HAVE_DATA)) { if (pindexTest->nStatus & BLOCK_FAILED_MASK) {
// Candidate has an invalid ancestor, remove entire chain from the set. // Candidate has an invalid ancestor, remove entire chain from the set.
if (pindexBestInvalid == NULL || pindexNew->nChainWork > pindexBestInvalid->nChainWork) if (pindexBestInvalid == NULL || pindexNew->nChainWork > pindexBestInvalid->nChainWork)
pindexBestInvalid = pindexNew; pindexBestInvalid = pindexNew;
@ -2026,6 +2026,7 @@ static CBlockIndex* FindMostWorkChain() {
setBlockIndexValid.erase(pindexFailed); setBlockIndexValid.erase(pindexFailed);
pindexFailed = pindexFailed->pprev; pindexFailed = pindexFailed->pprev;
} }
setBlockIndexValid.erase(pindexTest);
fInvalidAncestor = true; fInvalidAncestor = true;
break; break;
} }

Loading…
Cancel
Save