|
|
|
@ -62,8 +62,8 @@ func errResp(code errCode, format string, v ...interface{}) error { |
|
|
|
|
type ProtocolManager struct { |
|
|
|
|
networkId int |
|
|
|
|
|
|
|
|
|
fastSync uint32 // Flag whether fast sync is enabled (gets disabled if we already have blocks)
|
|
|
|
|
synced uint32 // Flag whether we're considered synchronised (enables transaction processing)
|
|
|
|
|
fastSync uint32 // Flag whether fast sync is enabled (gets disabled if we already have blocks)
|
|
|
|
|
acceptTxs uint32 // Flag whether we're considered synchronised (enables transaction processing)
|
|
|
|
|
|
|
|
|
|
txpool txPool |
|
|
|
|
blockchain *core.BlockChain |
|
|
|
@ -171,7 +171,7 @@ func NewProtocolManager(config *params.ChainConfig, fastSync bool, networkId int |
|
|
|
|
return blockchain.CurrentBlock().NumberU64() |
|
|
|
|
} |
|
|
|
|
inserter := func(blocks types.Blocks) (int, error) { |
|
|
|
|
atomic.StoreUint32(&manager.synced, 1) // Mark initial sync done on any fetcher import
|
|
|
|
|
atomic.StoreUint32(&manager.acceptTxs, 1) // Mark initial sync done on any fetcher import
|
|
|
|
|
return manager.blockchain.InsertChain(blocks) |
|
|
|
|
} |
|
|
|
|
manager.fetcher = fetcher.New(blockchain.GetBlockByHash, validator, manager.BroadcastBlock, heighter, inserter, manager.removePeer) |
|
|
|
@ -643,7 +643,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { |
|
|
|
|
|
|
|
|
|
case msg.Code == TxMsg: |
|
|
|
|
// Transactions arrived, make sure we have a valid and fresh chain to handle them
|
|
|
|
|
if atomic.LoadUint32(&pm.synced) == 0 { |
|
|
|
|
if atomic.LoadUint32(&pm.acceptTxs) == 0 { |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
// Transactions can be processed, parse all of them and deliver to the pool
|
|
|
|
|