aboutsummaryrefslogtreecommitdiffstats
path: root/eth
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2019-05-07 21:09:11 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-05-07 21:09:11 +0800
commit85726fdb025038d06a8e8d0abd4e19d86dd9ef59 (patch)
tree513e96f4d51f7b20252130184431c2c6f59da18b /eth
parent107c67d74ebfee16616bac92d0c39c8bfc9348ae (diff)
downloadgo-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.go7
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