aboutsummaryrefslogtreecommitdiffstats
path: root/peer.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-07-30 17:26:38 +0800
committerobscuren <geffobscura@gmail.com>2014-07-30 17:26:38 +0800
commit42d47ecfb09ac0b419db5722602d9b02e21f2457 (patch)
treeb1de5fb8972cbc1706a9dd5d55bbd5f2c701eb1e /peer.go
parent1f9894c0845a5259adbfd30fe3a86631e6403b8d (diff)
downloadgo-tangerine-42d47ecfb09ac0b419db5722602d9b02e21f2457.tar.gz
go-tangerine-42d47ecfb09ac0b419db5722602d9b02e21f2457.tar.zst
go-tangerine-42d47ecfb09ac0b419db5722602d9b02e21f2457.zip
Removed peer disconnect on pong timeout. Fixes #106
This mechanism wasn't very accurate so it has been removed.
Diffstat (limited to 'peer.go')
-rw-r--r--peer.go34
1 files changed, 21 insertions, 13 deletions
diff --git a/peer.go b/peer.go
index d977b2086..4b0523e70 100644
--- a/peer.go
+++ b/peer.go
@@ -294,12 +294,14 @@ out:
// Ping timer
case <-pingTimer.C:
- timeSince := time.Since(time.Unix(p.lastPong, 0))
- if !p.pingStartTime.IsZero() && p.lastPong != 0 && timeSince > (pingPongTimer+30*time.Second) {
- peerlogger.Infof("Peer did not respond to latest pong fast enough, it took %s, disconnecting.\n", timeSince)
- p.Stop()
- return
- }
+ /*
+ timeSince := time.Since(time.Unix(p.lastPong, 0))
+ if !p.pingStartTime.IsZero() && p.lastPong != 0 && timeSince > (pingPongTimer+30*time.Second) {
+ peerlogger.Infof("Peer did not respond to latest pong fast enough, it took %s, disconnecting.\n", timeSince)
+ p.Stop()
+ return
+ }
+ */
p.writeMessage(ethwire.NewMessage(ethwire.MsgPingTy, ""))
p.pingStartTime = time.Now()
@@ -354,7 +356,7 @@ func (p *Peer) HandleInbound() {
}
case ethwire.MsgDiscTy:
p.Stop()
- peerlogger.Infoln("Disconnect peer:", DiscReason(msg.Data.Get(0).Uint()))
+ peerlogger.Infoln("Disconnect peer: ", DiscReason(msg.Data.Get(0).Uint()))
case ethwire.MsgPingTy:
// Respond back with pong
p.QueueMessage(ethwire.NewMessage(ethwire.MsgPongTy, ""))
@@ -363,11 +365,17 @@ func (p *Peer) HandleInbound() {
// last pong so the peer handler knows this peer is still
// active.
p.lastPong = time.Now().Unix()
- p.pingTime = time.Now().Sub(p.pingStartTime)
+ p.pingTime = time.Since(p.pingStartTime)
case ethwire.MsgBlockTy:
// Get all blocks and process them
- var block, lastBlock *ethchain.Block
- var err error
+ //var block, lastBlock *ethchain.Block
+ //var err error
+
+ var (
+ block, lastBlock *ethchain.Block
+ blockChain = p.ethereum.BlockChain()
+ err error
+ )
// Make sure we are actually receiving anything
if msg.Data.Len()-1 > 1 && p.diverted {
@@ -383,11 +391,11 @@ func (p *Peer) HandleInbound() {
for i := msg.Data.Len() - 1; i >= 0; i-- {
block = ethchain.NewBlockFromRlpValue(msg.Data.Get(i))
// Do we have this block on our chain? If so we can continue
- if !p.ethereum.StateManager().BlockChain().HasBlock(block.Hash()) {
+ if !blockChain.HasBlock(block.Hash()) {
// We don't have this block, but we do have a block with the same prevHash, diversion time!
- if p.ethereum.StateManager().BlockChain().HasBlockWithPrevHash(block.PrevHash) {
+ if blockChain.HasBlockWithPrevHash(block.PrevHash) {
p.diverted = false
- if !p.ethereum.StateManager().BlockChain().FindCanonicalChainFromMsg(msg, block.PrevHash) {
+ if !blockChain.FindCanonicalChainFromMsg(msg, block.PrevHash) {
p.SyncWithPeerToLastKnown()
break nextMsg
}