Do not keep on asking for the same chain
This commit is contained in:
		
							
								
								
									
										8
									
								
								peer.go
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								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.
 | 
						// We use this to give some kind of pingtime to a node, not very accurate, could be improved.
 | 
				
			||||||
	pingTime      time.Duration
 | 
						pingTime      time.Duration
 | 
				
			||||||
	pingStartTime time.Time
 | 
						pingStartTime time.Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lastRequestedBlock *ethchain.Block
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewPeer(conn net.Conn, ethereum *Ethereum, inbound bool) *Peer {
 | 
					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
 | 
										// 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
 | 
										// common ground to start syncing from
 | 
				
			||||||
					lastBlock = ethchain.NewBlockFromRlpValue(msg.Data.Get(msg.Data.Len() - 1))
 | 
										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())
 | 
										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-- {
 | 
										for i := msg.Data.Len() - 1; i >= 0; i-- {
 | 
				
			||||||
						block = ethchain.NewBlockFromRlpValue(msg.Data.Get(i))
 | 
											block = ethchain.NewBlockFromRlpValue(msg.Data.Get(i))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user