From 9f1520b4c04b7dc8eec5dccb901bb1cb7da9a7cd Mon Sep 17 00:00:00 2001
From: Bas van Kervel <basvankervel@gmail.com>
Date: Tue, 13 Dec 2016 10:13:07 +0100
Subject: core: init pending state in tx pool on creation

---
 core/tx_pool.go | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

(limited to 'core')

diff --git a/core/tx_pool.go b/core/tx_pool.go
index b805cf226..65e076df9 100644
--- a/core/tx_pool.go
+++ b/core/tx_pool.go
@@ -124,6 +124,8 @@ func NewTxPool(config *params.ChainConfig, eventMux *event.TypeMux, currentState
 		quit:         make(chan struct{}),
 	}
 
+	pool.resetState()
+
 	pool.wg.Add(2)
 	go pool.eventLoop()
 	go pool.expirationLoop()
@@ -196,12 +198,8 @@ func (pool *TxPool) Stop() {
 }
 
 func (pool *TxPool) State() *state.ManagedState {
-	pool.mu.Lock()
-	defer pool.mu.Unlock()
-
-	if pool.pendingState == nil {
-		pool.resetState()
-	}
+	pool.mu.RLock()
+	defer pool.mu.RUnlock()
 
 	return pool.pendingState
 }
@@ -381,10 +379,6 @@ func (pool *TxPool) enqueueTx(hash common.Hash, tx *types.Transaction) {
 //
 // Note, this method assumes the pool lock is held!
 func (pool *TxPool) promoteTx(addr common.Address, hash common.Hash, tx *types.Transaction) {
-	// Init delayed since tx pool could have been started before any state sync
-	if pool.pendingState == nil {
-		pool.resetState()
-	}
 	// Try to insert the transaction into the pending queue
 	if pool.pending[addr] == nil {
 		pool.pending[addr] = newTxList(true)
-- 
cgit v1.2.3