diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-07-25 20:14:14 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2016-07-25 20:14:14 +0800 |
commit | 1dd272080dfb49a07a87c46e18d8aeaa0fd41a08 (patch) | |
tree | ec47d1ede87ac09607689277e0b90f40712556fe /eth/downloader/downloader.go | |
parent | 771655e3fee585ce4bc47dfaa279557c6c1c2421 (diff) | |
download | go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar.gz go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar.bz2 go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar.lz go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar.xz go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.tar.zst go-tangerine-1dd272080dfb49a07a87c46e18d8aeaa0fd41a08.zip |
eth, eth/downloader: better remote head tracking
Diffstat (limited to 'eth/downloader/downloader.go')
-rw-r--r-- | eth/downloader/downloader.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 1e9bc27bc..bf1cb5932 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -236,12 +236,12 @@ func (d *Downloader) Synchronising() bool { // RegisterPeer injects a new download peer into the set of block source to be // used for fetching hashes and blocks from. -func (d *Downloader) RegisterPeer(id string, version int, head common.Hash, +func (d *Downloader) RegisterPeer(id string, version int, currentHead currentHeadRetrievalFn, getRelHeaders relativeHeaderFetcherFn, getAbsHeaders absoluteHeaderFetcherFn, getBlockBodies blockBodyFetcherFn, getReceipts receiptFetcherFn, getNodeData stateFetcherFn) error { glog.V(logger.Detail).Infoln("Registering peer", id) - if err := d.peers.Register(newPeer(id, version, head, getRelHeaders, getAbsHeaders, getBlockBodies, getReceipts, getNodeData)); err != nil { + if err := d.peers.Register(newPeer(id, version, currentHead, getRelHeaders, getAbsHeaders, getBlockBodies, getReceipts, getNodeData)); err != nil { glog.V(logger.Error).Infoln("Register failed:", err) return err } @@ -501,7 +501,8 @@ func (d *Downloader) fetchHeight(p *peer) (*types.Header, error) { glog.V(logger.Debug).Infof("%v: retrieving remote chain height", p) // Request the advertised remote head block and wait for the response - go p.getRelHeaders(p.head, 1, 0, false) + head, _ := p.currentHead() + go p.getRelHeaders(head, 1, 0, false) timeout := time.After(d.requestTTL()) for { |