diff options
author | Péter Szilágyi <peterke@gmail.com> | 2019-05-07 21:09:11 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2019-05-07 21:09:11 +0800 |
commit | 85726fdb025038d06a8e8d0abd4e19d86dd9ef59 (patch) | |
tree | 513e96f4d51f7b20252130184431c2c6f59da18b /eth | |
parent | 107c67d74ebfee16616bac92d0c39c8bfc9348ae (diff) | |
download | go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar.gz go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar.bz2 go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar.lz go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar.xz go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.tar.zst go-tangerine-85726fdb025038d06a8e8d0abd4e19d86dd9ef59.zip |
eth/downloader: fix header delays during chain dedup
Diffstat (limited to 'eth')
-rw-r--r-- | eth/downloader/downloader.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 099eb5f47..95f2c2aee 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -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 |