aboutsummaryrefslogtreecommitdiffstats
path: root/eth
diff options
context:
space:
mode:
Diffstat (limited to 'eth')
-rw-r--r--eth/downloader/downloader.go11
-rw-r--r--eth/downloader/peer.go1
-rw-r--r--eth/handler.go4
3 files changed, 10 insertions, 6 deletions
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go
index 2d417dcf5..6768c3e67 100644
--- a/eth/downloader/downloader.go
+++ b/eth/downloader/downloader.go
@@ -205,13 +205,13 @@ func (d *Downloader) startFetchingHashes(p *peer, hash common.Hash, ignoreInitia
// Get the first batch of hashes
p.getHashes(hash)
- failureResponse := time.NewTimer(hashTtl)
+ failureResponseTimer := time.NewTimer(hashTtl)
out:
for {
select {
case hashes := <-d.hashCh:
- failureResponse.Reset(hashTtl)
+ failureResponseTimer.Reset(hashTtl)
var done bool // determines whether we're done fetching hashes (i.e. common hash found)
hashSet := set.New()
@@ -239,7 +239,7 @@ out:
} else { // we're done
break out
}
- case <-failureResponse.C:
+ case <-failureResponseTimer.C:
glog.V(logger.Debug).Infof("Peer (%s) didn't respond in time for hash request\n", p.id)
// TODO instead of reseting the queue select a new peer from which we can start downloading hashes.
// 1. check for peer's best hash to be included in the current hash set;
@@ -258,6 +258,10 @@ func (d *Downloader) startFetchingBlocks(p *peer) error {
glog.V(logger.Detail).Infoln("Downloading", d.queue.hashPool.Size(), "block(s)")
atomic.StoreInt32(&d.downloadingBlocks, 1)
defer atomic.StoreInt32(&d.downloadingBlocks, 0)
+ // Defer the peer reset. This will empty the peer requested set
+ // and makes sure there are no lingering peers with an incorrect
+ // state
+ defer d.peers.reset()
start := time.Now()
@@ -302,7 +306,6 @@ out:
// and all failed throw an error
if len(d.queue.fetching) == 0 {
d.queue.reset()
- d.peers.reset()
return fmt.Errorf("%v avaialable = %d. total = %d", errPeersUnavailable, len(availablePeers), len(d.peers))
}
diff --git a/eth/downloader/peer.go b/eth/downloader/peer.go
index 88ede16f9..7065ca105 100644
--- a/eth/downloader/peer.go
+++ b/eth/downloader/peer.go
@@ -137,4 +137,5 @@ func (p *peer) demote() {
func (p *peer) reset() {
p.state = idleState
+ p.requested.Clear()
}
diff --git a/eth/handler.go b/eth/handler.go
index 1dbc62cce..f1f462a89 100644
--- a/eth/handler.go
+++ b/eth/handler.go
@@ -36,7 +36,6 @@ pm.chainman.InsertChain(blocks)
import (
"fmt"
- "math"
"sync"
"github.com/ethereum/go-ethereum/common"
@@ -326,7 +325,8 @@ func (pm *ProtocolManager) BroadcastBlock(hash common.Hash, block *types.Block)
}
}
// Broadcast block to peer set
- peers = peers[:int(math.Sqrt(float64(len(peers))))]
+ // XXX due to the current shit state of the network disable the limit
+ //peers = peers[:int(math.Sqrt(float64(len(peers))))]
for _, peer := range peers {
peer.sendNewBlock(block)
}