[release/1.4.6] core: add missing lock in TxPool.{GetTransaction,RemoveTx}
Fixes #2650
(cherry picked from commit fc85dd175e)
			
			
This commit is contained in:
		
				
					committed by
					
						
						Péter Szilágyi
					
				
			
			
				
	
			
			
			
						parent
						
							3d69970c15
						
					
				
				
					commit
					44b912ec64
				
			@@ -368,6 +368,9 @@ func (self *TxPool) AddTransactions(txs []*types.Transaction) {
 | 
			
		||||
// GetTransaction returns a transaction if it is contained in the pool
 | 
			
		||||
// and nil otherwise.
 | 
			
		||||
func (tp *TxPool) GetTransaction(hash common.Hash) *types.Transaction {
 | 
			
		||||
	tp.mu.RLock()
 | 
			
		||||
	defer tp.mu.RUnlock()
 | 
			
		||||
 | 
			
		||||
	// check the txs first
 | 
			
		||||
	if tx, ok := tp.pending[hash]; ok {
 | 
			
		||||
		return tx
 | 
			
		||||
@@ -421,12 +424,18 @@ func (self *TxPool) RemoveTransactions(txs types.Transactions) {
 | 
			
		||||
	self.mu.Lock()
 | 
			
		||||
	defer self.mu.Unlock()
 | 
			
		||||
	for _, tx := range txs {
 | 
			
		||||
		self.RemoveTx(tx.Hash())
 | 
			
		||||
		self.removeTx(tx.Hash())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RemoveTx removes the transaction with the given hash from the pool.
 | 
			
		||||
func (pool *TxPool) RemoveTx(hash common.Hash) {
 | 
			
		||||
	pool.mu.Lock()
 | 
			
		||||
	defer pool.mu.Unlock()
 | 
			
		||||
	pool.removeTx(hash)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (pool *TxPool) removeTx(hash common.Hash) {
 | 
			
		||||
	// delete from pending pool
 | 
			
		||||
	delete(pool.pending, hash)
 | 
			
		||||
	// delete from queue
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user