good morning!!!!

Skip to content
Snippets Groups Projects
Commit 9ed8dc73 authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

Attempt to catch up from unknown block

parent 2458697d
Branches
Tags
No related merge requests found
...@@ -73,6 +73,10 @@ func (self *BlockPool) SetBlock(b *ethchain.Block, peer *Peer) { ...@@ -73,6 +73,10 @@ func (self *BlockPool) SetBlock(b *ethchain.Block, peer *Peer) {
if self.pool[hash] == nil && !self.eth.BlockChain().HasBlock(b.Hash()) { if self.pool[hash] == nil && !self.eth.BlockChain().HasBlock(b.Hash()) {
self.hashPool = append(self.hashPool, b.Hash()) self.hashPool = append(self.hashPool, b.Hash())
self.pool[hash] = &block{peer, peer, b, time.Now(), 0} self.pool[hash] = &block{peer, peer, b, time.Now(), 0}
if !self.eth.BlockChain().HasBlock(b.PrevHash) && self.pool[string(b.PrevHash)] == nil {
peer.QueueMessage(ethwire.NewMessage(ethwire.MsgGetBlockHashesTy, []interface{}{b.PrevHash, uint32(256)}))
}
} else if self.pool[hash] != nil { } else if self.pool[hash] != nil {
self.pool[hash].block = b self.pool[hash].block = b
} }
...@@ -218,6 +222,7 @@ out: ...@@ -218,6 +222,7 @@ out:
case <-procTimer.C: case <-procTimer.C:
// XXX We can optimize this lifting this on to a new goroutine. // XXX We can optimize this lifting this on to a new goroutine.
// We'd need to make sure that the pools are properly protected by a mutex // We'd need to make sure that the pools are properly protected by a mutex
// XXX This should moved in The Great Refactor(TM)
amount := self.ProcessCanonical(func(block *ethchain.Block) { amount := self.ProcessCanonical(func(block *ethchain.Block) {
err := self.eth.StateManager().Process(block, false) err := self.eth.StateManager().Process(block, false)
if err != nil { if err != nil {
......
...@@ -23,12 +23,13 @@ type JSBlock struct { ...@@ -23,12 +23,13 @@ type JSBlock struct {
Name string `json:"name"` Name string `json:"name"`
GasLimit string `json:"gasLimit"` GasLimit string `json:"gasLimit"`
GasUsed string `json:"gasUsed"` GasUsed string `json:"gasUsed"`
PrevHash string `json:"prevHash"`
} }
// Creates a new QML Block from a chain block // Creates a new QML Block from a chain block
func NewJSBlock(block *ethchain.Block) *JSBlock { func NewJSBlock(block *ethchain.Block) *JSBlock {
if block == nil { if block == nil {
return nil return &JSBlock{}
} }
var ptxs []JSTransaction var ptxs []JSTransaction
...@@ -38,7 +39,14 @@ func NewJSBlock(block *ethchain.Block) *JSBlock { ...@@ -38,7 +39,14 @@ func NewJSBlock(block *ethchain.Block) *JSBlock {
list := ethutil.NewList(ptxs) list := ethutil.NewList(ptxs)
return &JSBlock{ref: block, Size: block.Size().String(), Number: int(block.Number.Uint64()), GasUsed: block.GasUsed.String(), GasLimit: block.GasLimit.String(), Hash: ethutil.Bytes2Hex(block.Hash()), Transactions: list, Time: block.Time, Coinbase: ethutil.Bytes2Hex(block.Coinbase)} return &JSBlock{
ref: block, Size: block.Size().String(),
Number: int(block.Number.Uint64()), GasUsed: block.GasUsed.String(),
GasLimit: block.GasLimit.String(), Hash: ethutil.Bytes2Hex(block.Hash()),
Transactions: list, Time: block.Time,
Coinbase: ethutil.Bytes2Hex(block.Coinbase),
PrevHash: ethutil.Bytes2Hex(block.PrevHash),
}
} }
func (self *JSBlock) ToString() string { func (self *JSBlock) ToString() string {
......
...@@ -221,7 +221,6 @@ func (self *Peer) Connect(addr string) (conn net.Conn, err error) { ...@@ -221,7 +221,6 @@ func (self *Peer) Connect(addr string) (conn net.Conn, err error) {
for attempts := 0; attempts < maxTries; attempts++ { for attempts := 0; attempts < maxTries; attempts++ {
conn, err = net.DialTimeout("tcp", addr, 10*time.Second) conn, err = net.DialTimeout("tcp", addr, 10*time.Second)
if err != nil { if err != nil {
//peerlogger.Debugf("Peer connection failed. Retrying (%d/%d) (%s)\n", attempts+1, maxTries, addr)
time.Sleep(time.Duration(attempts*20) * time.Second) time.Sleep(time.Duration(attempts*20) * time.Second)
continue continue
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment