From 059a1e9e4edeb75cef6da05936835cfbc61e1350 Mon Sep 17 00:00:00 2001
From: Jeffrey Wilcke <geffobscura@gmail.com>
Date: Sun, 28 Jun 2015 13:38:21 +0200
Subject: miner: broadcast block before insertion/validation

---
 miner/worker.go | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/miner/worker.go b/miner/worker.go
index 55c23376c..2955a9dee 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -239,12 +239,16 @@ func (self *worker) wait() {
 				continue
 			}
 
+			// broadcast before waiting for validation
+			go self.mux.Post(core.NewMinedBlockEvent{block})
+			// insert mined block in to our own chain
 			if _, err := self.chain.InsertChain(types.Blocks{block}); err == nil {
+				// remove uncles we've previously inserted
 				for _, uncle := range block.Uncles() {
 					delete(self.possibleUncles, uncle.Hash())
 				}
-				self.mux.Post(core.NewMinedBlockEvent{block})
 
+				// check staleness and display confirmation
 				var stale, confirm string
 				canonBlock := self.chain.GetBlockByNumber(block.NumberU64())
 				if canonBlock != nil && canonBlock.Hash() != block.Hash() {
@@ -256,6 +260,7 @@ func (self *worker) wait() {
 
 				glog.V(logger.Info).Infof("🔨  Mined %sblock (#%v / %x). %s", stale, block.Number(), block.Hash().Bytes()[:4], confirm)
 
+				// XXX remove old structured json logging
 				jsonlogger.LogJson(&logger.EthMinerNewBlock{
 					BlockHash:     block.Hash().Hex(),
 					BlockNumber:   block.Number(),
-- 
cgit v1.2.3