diff options
Diffstat (limited to 'eth/downloader/peer.go')
-rw-r--r-- | eth/downloader/peer.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go index 486c09e38..318da59b7 100644 --- a/eth/downloader/peer.go +++ b/eth/downloader/peer.go @@ -1,6 +1,7 @@ package downloader import ( + "errors" "math/big" "sync" @@ -31,10 +32,14 @@ func newPeer(id string, td *big.Int, hash common.Hash, getHashes hashFetcherFn, } // fetch a chunk using the peer -func (p *peer) fetch(chunk *chunk) { +func (p *peer) fetch(chunk *chunk) error { p.mu.Lock() defer p.mu.Unlock() + if p.state == workingState { + return errors.New("peer already fetching chunk") + } + // set working state p.state = workingState // convert the set to a fetchable slice @@ -45,4 +50,6 @@ func (p *peer) fetch(chunk *chunk) { return true }) p.getBlocks(hashes) + + return nil } |