diff --git a/src/validation.cpp b/src/validation.cpp index bfd14f1733..6911afe499 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -504,10 +504,10 @@ public: /** Parameters for test package mempool validation through testmempoolaccept. */ static ATMPArgs PackageTestAccept(const CChainParams& chainparams, int64_t accept_time, - std::vector& coins_to_uncache) { + const ignore_rejects_type& ignore_rejects, std::vector& coins_to_uncache) { return ATMPArgs{/* m_chainparams */ chainparams, /* m_accept_time */ accept_time, - empty_ignore_rejects, + /* m_ignore_rejects */ ignore_rejects, /* m_coins_to_uncache */ coins_to_uncache, /* m_test_accept */ true, /* m_allow_replacement */ false, @@ -521,10 +521,10 @@ public: /** Parameters for child-with-unconfirmed-parents package validation. */ static ATMPArgs PackageChildWithParents(const CChainParams& chainparams, int64_t accept_time, - std::vector& coins_to_uncache, const std::optional& client_maxfeerate) { + std::vector& coins_to_uncache, const std::optional& client_maxfeerate, const ignore_rejects_type& ignore_rejects) { return ATMPArgs{/* m_chainparams */ chainparams, /* m_accept_time */ accept_time, - empty_ignore_rejects, + /* m_ignore_rejects */ ignore_rejects, /* m_coins_to_uncache */ coins_to_uncache, /* m_test_accept */ false, /* m_allow_replacement */ true, @@ -1920,7 +1920,7 @@ MempoolAcceptResult AcceptToMemoryPool(Chainstate& active_chainstate, const CTra } PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool, - const Package& package, bool test_accept, const std::optional& client_maxfeerate) + const Package& package, bool test_accept, const std::optional& client_maxfeerate, const ignore_rejects_type& ignore_rejects) { AssertLockHeld(cs_main); assert(!package.empty()); @@ -1931,10 +1931,10 @@ PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxM auto result = [&]() EXCLUSIVE_LOCKS_REQUIRED(cs_main) { AssertLockHeld(cs_main); if (test_accept) { - auto args = MemPoolAccept::ATMPArgs::PackageTestAccept(chainparams, GetTime(), coins_to_uncache); + auto args = MemPoolAccept::ATMPArgs::PackageTestAccept(chainparams, GetTime(), ignore_rejects, coins_to_uncache); return MemPoolAccept(pool, active_chainstate).AcceptMultipleTransactions(package, args); } else { - auto args = MemPoolAccept::ATMPArgs::PackageChildWithParents(chainparams, GetTime(), coins_to_uncache, client_maxfeerate); + auto args = MemPoolAccept::ATMPArgs::PackageChildWithParents(chainparams, GetTime(), coins_to_uncache, client_maxfeerate, ignore_rejects); return MemPoolAccept(pool, active_chainstate).AcceptPackage(package, args); } }(); diff --git a/src/validation.h b/src/validation.h index e4250333bf..0b471bb675 100644 --- a/src/validation.h +++ b/src/validation.h @@ -291,7 +291,7 @@ static inline MempoolAcceptResult AcceptToMemoryPool(Chainstate& active_chainsta * possible for the package to be partially submitted. */ PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool, - const Package& txns, bool test_accept, const std::optional& client_maxfeerate) + const Package& txns, bool test_accept, const std::optional& client_maxfeerate, const ignore_rejects_type& ignore_rejects=empty_ignore_rejects) EXCLUSIVE_LOCKS_REQUIRED(cs_main); /* Mempool validation helper functions */