aboutsummaryrefslogtreecommitdiffstats
path: root/eth
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2015-05-26 17:44:09 +0800
committerPéter Szilágyi <peterke@gmail.com>2015-06-05 17:52:48 +0800
commit94e525ae12bf3455ae434feb83ad834c8dcfa1ad (patch)
treeebe876afe8359e9014188721c876216cce94bd14 /eth
parent067e66b34869402cf7bd0f352dad37bd4200e976 (diff)
downloaddexon-94e525ae12bf3455ae434feb83ad834c8dcfa1ad.tar.gz
dexon-94e525ae12bf3455ae434feb83ad834c8dcfa1ad.tar.zst
dexon-94e525ae12bf3455ae434feb83ad834c8dcfa1ad.zip
eth, eth/downloader: fix #1098, elevate empty hash errors to peer drops
Diffstat (limited to 'eth')
-rw-r--r--eth/downloader/downloader.go4
-rw-r--r--eth/sync.go2
2 files changed, 3 insertions, 3 deletions
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index d8dbef726..6f1c94a91 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -42,7 +42,7 @@ var (
errNoPeers = errors.New("no peers to keep download active")
ErrPendingQueue = errors.New("pending items in queue")
ErrTimeout = errors.New("timeout")
- errEmptyHashSet = errors.New("empty hash set by peer")
+ ErrEmptyHashSet = errors.New("empty hash set by peer")
errPeersUnavailable = errors.New("no peers available or all peers tried for block download process")
errAlreadyInPool = errors.New("hash already in pool")
ErrInvalidChain = errors.New("retrieved hash chain is invalid")
@@ -289,7 +289,7 @@ func (d *Downloader) fetchHashes(p *peer, h common.Hash) error {
// Make sure the peer actually gave something valid
if len(hashPack.hashes) == 0 {
glog.V(logger.Debug).Infof("Peer (%s) responded with empty hash set", active.id)
- return errEmptyHashSet
+ return ErrEmptyHashSet
}
for _, hash := range hashPack.hashes {
if d.banned.Has(hash) {
diff --git a/eth/sync.go b/eth/sync.go
index 76e137630..56084f2f0 100644
--- a/eth/sync.go
+++ b/eth/sync.go
@@ -109,7 +109,7 @@ func (pm *ProtocolManager) synchronise(peer *peer) {
case downloader.ErrBusy:
glog.V(logger.Debug).Infof("Synchronisation already in progress")
- case downloader.ErrTimeout, downloader.ErrBadPeer, downloader.ErrInvalidChain, downloader.ErrCrossCheckFailed:
+ case downloader.ErrTimeout, downloader.ErrBadPeer, downloader.ErrEmptyHashSet, downloader.ErrInvalidChain, downloader.ErrCrossCheckFailed:
glog.V(logger.Debug).Infof("Removing peer %v: %v", peer.id, err)
pm.removePeer(peer.id)