From 0f76a1c6df44bc3242a64e76bef66dfe312d259b Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Fri, 15 May 2015 00:41:27 +0200
Subject: [PATCH] core: changed how head events are checked

---
 core/chain_manager.go | 4 ++--
 core/events.go        | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/core/chain_manager.go b/core/chain_manager.go
index 9f6d7f823..2c96c243c 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -593,7 +593,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
 				self.setTransState(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++
 
 				if glog.V(logger.Debug) {
@@ -683,7 +683,7 @@ out:
 					case ChainEvent:
 						// 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.
-						if i+1 == ev.canonicalCount {
+						if self.lastBlockHash == event.Hash {
 							self.currentGasLimit = CalcGasLimit(event.Block)
 							self.eventMux.Post(ChainHeadEvent{event.Block})
 						}
diff --git a/core/events.go b/core/events.go
index 1ea35c2f4..7b56f8bb6 100644
--- a/core/events.go
+++ b/core/events.go
@@ -3,6 +3,7 @@ package core
 import (
 	"math/big"
 
+	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/core/state"
 	"github.com/ethereum/go-ethereum/core/types"
 )
@@ -27,6 +28,7 @@ type ChainSplitEvent struct {
 
 type ChainEvent struct {
 	Block *types.Block
+	Hash  common.Hash
 	Logs  state.Logs
 }
 
-- 
GitLab