Commit be9bfb55 authored by obscuren's avatar obscuren

Minor improvement catching up

* When catching up check linked up the chain of hashes
parent 836ed9d6
package eth
import (
"fmt"
"math"
"math/big"
"sync"
......@@ -51,6 +52,7 @@ func (self *BlockPool) AddHash(hash []byte) {
func (self *BlockPool) SetBlock(b *ethchain.Block, peer *Peer) {
hash := string(b.Hash())
fmt.Printf("::SetBlock %x\n", hash)
if self.pool[hash] == nil {
self.pool[hash] = &block{peer, nil}
......@@ -88,13 +90,19 @@ func (self *BlockPool) CheckLinkAndProcess(f func(block *ethchain.Block)) bool {
}
func (self *BlockPool) IsLinked() bool {
if len(self.hashPool) == 0 || self.pool[string(self.hashPool[0])] == nil {
if len(self.hashPool) == 0 {
return false
}
block := self.pool[string(self.hashPool[0])].block
if block != nil {
return self.eth.BlockChain().HasBlock(block.PrevHash)
for i := 0; i < len(self.hashPool); i++ {
item := self.pool[string(self.hashPool[i])]
if item != nil && item.block != nil {
if self.eth.BlockChain().HasBlock(item.block.PrevHash) {
self.hashPool = self.hashPool[i:]
return true
}
}
}
return false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment