Merge #7919: Fix headers announcements edge case
3a99fb2
Fix headers announcements edge case (Suhas Daftuar)
This commit is contained in:
commit
76176823ba
1 changed files with 15 additions and 1 deletions
16
src/main.cpp
16
src/main.cpp
|
@ -5717,7 +5717,21 @@ bool SendMessages(CNode* pto)
|
||||||
fRevertToInv = true;
|
fRevertToInv = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
assert(pBestIndex == NULL || pindex->pprev == pBestIndex);
|
if (pBestIndex != NULL && pindex->pprev != pBestIndex) {
|
||||||
|
// This means that the list of blocks to announce don't
|
||||||
|
// connect to each other.
|
||||||
|
// This shouldn't really be possible to hit during
|
||||||
|
// regular operation (because reorgs should take us to
|
||||||
|
// a chain that has some block not on the prior chain,
|
||||||
|
// which should be caught by the prior check), but one
|
||||||
|
// way this could happen is by using invalidateblock /
|
||||||
|
// reconsiderblock repeatedly on the tip, causing it to
|
||||||
|
// be added multiple times to vBlockHashesToAnnounce.
|
||||||
|
// Robustly deal with this rare situation by reverting
|
||||||
|
// to an inv.
|
||||||
|
fRevertToInv = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
pBestIndex = pindex;
|
pBestIndex = pindex;
|
||||||
if (fFoundStartingHeader) {
|
if (fFoundStartingHeader) {
|
||||||
// add this to the headers message
|
// add this to the headers message
|
||||||
|
|
Loading…
Reference in a new issue