core: changed how head events are checked

This commit is contained in:
obscuren 2015-05-15 00:41:27 +02:00
parent 580bae0a86
commit 0f76a1c6df
2 changed files with 4 additions and 2 deletions

View File

@ -593,7 +593,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
self.setTransState(state.New(block.Root(), self.stateDb)) self.setTransState(state.New(block.Root(), self.stateDb))
self.txState.SetState(state.New(block.Root(), self.stateDb)) self.txState.SetState(state.New(block.Root(), self.stateDb))
queue[i] = ChainEvent{block, logs} queue[i] = ChainEvent{block, block.Hash(), logs}
queueEvent.canonicalCount++ queueEvent.canonicalCount++
if glog.V(logger.Debug) { if glog.V(logger.Debug) {
@ -683,7 +683,7 @@ out:
case ChainEvent: case ChainEvent:
// We need some control over the mining operation. Acquiring locks and waiting for the miner to create new block takes too long // We need some control over the mining operation. Acquiring locks and waiting for the miner to create new block takes too long
// and in most cases isn't even necessary. // and in most cases isn't even necessary.
if i+1 == ev.canonicalCount { if self.lastBlockHash == event.Hash {
self.currentGasLimit = CalcGasLimit(event.Block) self.currentGasLimit = CalcGasLimit(event.Block)
self.eventMux.Post(ChainHeadEvent{event.Block}) self.eventMux.Post(ChainHeadEvent{event.Block})
} }

View File

@ -3,6 +3,7 @@ package core
import ( import (
"math/big" "math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
) )
@ -27,6 +28,7 @@ type ChainSplitEvent struct {
type ChainEvent struct { type ChainEvent struct {
Block *types.Block Block *types.Block
Hash common.Hash
Logs state.Logs Logs state.Logs
} }