From 676c4e8ec763bcf4e02ac382e263bc514d742009 Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Thu, 9 May 2024 13:37:15 +0800 Subject: [PATCH] core: sanitize more TxPoolConfig fields (#17210) --- core/tx_pool.go | 20 ++++++++++++++++++++ core/tx_pool_test.go | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/core/tx_pool.go b/core/tx_pool.go index 563dcf5d57..b0e43fd468 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -192,6 +192,26 @@ func (config *TxPoolConfig) sanitize() TxPoolConfig { log.Warn("Sanitizing invalid txpool price bump", "provided", conf.PriceBump, "updated", DefaultTxPoolConfig.PriceBump) conf.PriceBump = DefaultTxPoolConfig.PriceBump } + if conf.AccountSlots < 1 { + log.Warn("Sanitizing invalid txpool account slots", "provided", conf.AccountSlots, "updated", DefaultTxPoolConfig.AccountSlots) + conf.AccountSlots = DefaultTxPoolConfig.AccountSlots + } + if conf.GlobalSlots < 1 { + log.Warn("Sanitizing invalid txpool global slots", "provided", conf.GlobalSlots, "updated", DefaultTxPoolConfig.GlobalSlots) + conf.GlobalSlots = DefaultTxPoolConfig.GlobalSlots + } + if conf.AccountQueue < 1 { + log.Warn("Sanitizing invalid txpool account queue", "provided", conf.AccountQueue, "updated", DefaultTxPoolConfig.AccountQueue) + conf.AccountQueue = DefaultTxPoolConfig.AccountQueue + } + if conf.GlobalQueue < 1 { + log.Warn("Sanitizing invalid txpool global queue", "provided", conf.GlobalQueue, "updated", DefaultTxPoolConfig.GlobalQueue) + conf.GlobalQueue = DefaultTxPoolConfig.GlobalQueue + } + if conf.Lifetime < 1 { + log.Warn("Sanitizing invalid txpool lifetime", "provided", conf.Lifetime, "updated", DefaultTxPoolConfig.Lifetime) + conf.Lifetime = DefaultTxPoolConfig.Lifetime + } return conf } diff --git a/core/tx_pool_test.go b/core/tx_pool_test.go index 28b1c7c83a..f4f7758a6e 100644 --- a/core/tx_pool_test.go +++ b/core/tx_pool_test.go @@ -1129,9 +1129,8 @@ func TestTransactionPendingMinimumAllowance(t *testing.T) { blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} config := testTxPoolConfig - config.AccountSlots = 10 - config.GlobalSlots = 0 config.AccountSlots = 5 + config.GlobalSlots = 1 pool := NewTxPool(config, params.TestChainConfig, blockchain) defer pool.Stop() @@ -1473,6 +1472,7 @@ func TestTransactionPoolStableUnderpricing(t *testing.T) { config := testTxPoolConfig config.GlobalSlots = common.LimitThresholdNonceInQueue config.GlobalQueue = 0 + config.AccountSlots = config.GlobalSlots - 1 pool := NewTxPool(config, params.TestChainConfig, blockchain) defer pool.Stop()