aboutsummaryrefslogtreecommitdiffstats
path: root/peer.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-06-23 17:24:45 +0800
committerobscuren <geffobscura@gmail.com>2014-06-23 17:24:45 +0800
commit9350ecd36fe3a30bea4cfd60db9a53787d4d5852 (patch)
treeb43ffe7ee2e3d4ee95626a669dc04afaf47ea6b7 /peer.go
parent8c96c5662f9a362c50f3e6e04e886e2518cc68b9 (diff)
downloaddexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar.gz
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar.bz2
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar.lz
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar.xz
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.tar.zst
dexon-9350ecd36fe3a30bea4cfd60db9a53787d4d5852.zip
Do not keep on asking for the same chain
Diffstat (limited to 'peer.go')
-rw-r--r--peer.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/peer.go b/peer.go
index b4bde2c1d..ca4168940 100644
--- a/peer.go
+++ b/peer.go
@@ -138,6 +138,8 @@ type Peer struct {
// We use this to give some kind of pingtime to a node, not very accurate, could be improved.
pingTime time.Duration
pingStartTime time.Time
+
+ lastRequestedBlock *ethchain.Block
}
func NewPeer(conn net.Conn, ethereum *Ethereum, inbound bool) *Peer {
@@ -351,6 +353,12 @@ func (p *Peer) HandleInbound() {
// We requested blocks and now we need to make sure we have a common ancestor somewhere in these blocks so we can find
// common ground to start syncing from
lastBlock = ethchain.NewBlockFromRlpValue(msg.Data.Get(msg.Data.Len() - 1))
+ if p.lastRequestedBlock != nil && bytes.Compare(lastBlock.Hash(), p.lastRequestedBlock.Hash()) == 0 {
+ p.catchingUp = false
+ continue
+ }
+ p.lastRequestedBlock = lastBlock
+
ethutil.Config.Log.Infof("[PEER] Last block: %x. Checking if we have it locally.\n", lastBlock.Hash())
for i := msg.Data.Len() - 1; i >= 0; i-- {
block = ethchain.NewBlockFromRlpValue(msg.Data.Get(i))