eth/downloader: fix header delays during chain dedup
This commit is contained in:
parent
107c67d74e
commit
85726fdb02
@ -892,6 +892,7 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, pivot uint64)
|
||||
}
|
||||
}
|
||||
// Start pulling the header chain skeleton until all is done
|
||||
ancestor := from
|
||||
getHeaders(from)
|
||||
|
||||
for {
|
||||
@ -962,6 +963,12 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, pivot uint64)
|
||||
head = full
|
||||
}
|
||||
}
|
||||
// If the head is below the common ancestor, we're actually deduplicating
|
||||
// already existing chain segments, so use the ancestor as the fake head.
|
||||
// Otherwise we might end up delaying header deliveries pointlessly.
|
||||
if head < ancestor {
|
||||
head = ancestor
|
||||
}
|
||||
// If the head is way older than this batch, delay the last few headers
|
||||
if head+uint64(reorgProtThreshold) < headers[n-1].Number.Uint64() {
|
||||
delay := reorgProtHeaderDelay
|
||||
|
Loading…
Reference in New Issue
Block a user