From db63f1ee420f86bcf85fb8c6bb34e88ac10cddc9 Mon Sep 17 00:00:00 2001 From: meows Date: Mon, 11 May 2020 15:30:23 -0500 Subject: [PATCH] downloader: only attempt common ancestor negotiation if > 0 local head Eliminates a redundant negotiation if we can already deduce that our only common block is genesis. Signed-off-by: meows --- eth/downloader/downloader.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 40ee78f90f..6bd4706915 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -441,10 +441,18 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td *big.I } height := latest.Number.Uint64() - origin, err := d.findAncestor(p, latest) - if err != nil { - return err + var origin = uint64(0) + + if d.blockchain != nil && + d.blockchain.CurrentHeader() != nil && + d.blockchain.CurrentHeader().Number != nil && + d.blockchain.CurrentHeader().Number.Uint64() > 0 { + origin, err = d.findAncestor(p, latest) + if err != nil { + return err + } } + d.syncStatsLock.Lock() if d.syncStatsChainHeight <= origin || d.syncStatsChainOrigin > origin { d.syncStatsChainOrigin = origin