diff --git a/ci/test/06_script_b.sh b/ci/test/06_script_b.sh index 1220b15d5a2..978830b7e2b 100755 --- a/ci/test/06_script_b.sh +++ b/ci/test/06_script_b.sh @@ -44,6 +44,7 @@ if [ "${RUN_TIDY}" = "true" ]; then " src/dbwrapper.cpp"\ " src/init"\ " src/kernel"\ + " src/mempool_args.cpp"\ " src/node/chainstate.cpp"\ " src/policy/feerate.cpp"\ " src/policy/packages.cpp"\ diff --git a/src/init.cpp b/src/init.cpp index a94bbe6460e..9a3c70abbd0 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1418,7 +1418,9 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) .estimator = node.fee_estimator.get(), .check_ratio = chainparams.DefaultConsistencyChecks() ? 1 : 0, }; - ApplyArgsManOptions(args, mempool_opts); + if (const auto err{ApplyArgsManOptions(args, chainparams, mempool_opts)}) { + return InitError(*err); + } mempool_opts.check_ratio = std::clamp(mempool_opts.check_ratio, 0, 1'000'000); int64_t descendant_limit_bytes = mempool_opts.limits.descendant_size_vbytes * 40; diff --git a/src/mempool_args.cpp b/src/mempool_args.cpp index 77caa127e96..da0fb622623 100644 --- a/src/mempool_args.cpp +++ b/src/mempool_args.cpp @@ -7,7 +7,13 @@ #include #include +#include +#include #include +#include + +#include +#include using kernel::MemPoolLimits; using kernel::MemPoolOptions; @@ -25,7 +31,7 @@ void ApplyArgsManOptions(const ArgsManager& argsman, MemPoolLimits& mempool_limi } } -void ApplyArgsManOptions(const ArgsManager& argsman, MemPoolOptions& mempool_opts) +std::optional ApplyArgsManOptions(const ArgsManager& argsman, const CChainParams& chainparams, MemPoolOptions& mempool_opts) { mempool_opts.check_ratio = argsman.GetIntArg("-checkmempool", mempool_opts.check_ratio); @@ -36,4 +42,6 @@ void ApplyArgsManOptions(const ArgsManager& argsman, MemPoolOptions& mempool_opt mempool_opts.full_rbf = argsman.GetBoolArg("-mempoolfullrbf", mempool_opts.full_rbf); ApplyArgsManOptions(argsman, mempool_opts.limits); + + return std::nullopt; } diff --git a/src/mempool_args.h b/src/mempool_args.h index 9a4abe6618f..72d202cca27 100644 --- a/src/mempool_args.h +++ b/src/mempool_args.h @@ -5,18 +5,23 @@ #ifndef BITCOIN_MEMPOOL_ARGS_H #define BITCOIN_MEMPOOL_ARGS_H +#include + class ArgsManager; +class CChainParams; +struct bilingual_str; namespace kernel { struct MemPoolOptions; }; /** * Overlay the options set in \p argsman on top of corresponding members in \p mempool_opts. + * Returns an error if one was encountered. * * @param[in] argsman The ArgsManager in which to check set options. * @param[in,out] mempool_opts The MemPoolOptions to modify according to \p argsman. */ -void ApplyArgsManOptions(const ArgsManager& argsman, kernel::MemPoolOptions& mempool_opts); +[[nodiscard]] std::optional ApplyArgsManOptions(const ArgsManager& argsman, const CChainParams& chainparams, kernel::MemPoolOptions& mempool_opts); #endif // BITCOIN_MEMPOOL_ARGS_H diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp index 67984721a37..f5076c043bb 100644 --- a/src/test/util/setup_common.cpp +++ b/src/test/util/setup_common.cpp @@ -160,7 +160,8 @@ CTxMemPool::Options MemPoolOptionsForTest(const NodeContext& node) // chainparams.DefaultConsistencyChecks for tests .check_ratio = 1, }; - ApplyArgsManOptions(*node.args, mempool_opts); + const auto err{ApplyArgsManOptions(*node.args, ::Params(), mempool_opts)}; + Assert(!err); return mempool_opts; }