diff --git a/src/net_processing.cpp b/src/net_processing.cpp index f061f981f24..399c751bd97 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1649,13 +1649,12 @@ bool PeerManagerImpl::GetNodeStateStats(NodeId nodeid, CNodeStateStats& stats) c void PeerManagerImpl::AddToCompactExtraTransactions(const CTransactionRef& tx) { - size_t max_extra_txn = gArgs.GetIntArg("-blockreconstructionextratxn", DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN); - if (max_extra_txn <= 0) + if (m_opts.max_extra_txs <= 0) return; if (!vExtraTxnForCompact.size()) - vExtraTxnForCompact.resize(max_extra_txn); + vExtraTxnForCompact.resize(m_opts.max_extra_txs); vExtraTxnForCompact[vExtraTxnForCompactIt] = std::make_pair(tx->GetWitnessHash(), tx); - vExtraTxnForCompactIt = (vExtraTxnForCompactIt + 1) % max_extra_txn; + vExtraTxnForCompactIt = (vExtraTxnForCompactIt + 1) % m_opts.max_extra_txs; } void PeerManagerImpl::Misbehaving(Peer& peer, int howmuch, const std::string& message) diff --git a/src/net_processing.h b/src/net_processing.h index 422bf6879b3..6ee4f229607 100644 --- a/src/net_processing.h +++ b/src/net_processing.h @@ -50,6 +50,7 @@ public: bool ignore_incoming_txs{DEFAULT_BLOCKSONLY}; bool reconcile_txs{DEFAULT_TXRECONCILIATION_ENABLE}; uint32_t max_orphan_txs{DEFAULT_MAX_ORPHAN_TRANSACTIONS}; + size_t max_extra_txs{DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN}; }; static std::unique_ptr make(CConnman& connman, AddrMan& addrman, diff --git a/src/node/peerman_args.cpp b/src/node/peerman_args.cpp index 8a1da693f4e..4a000de83ff 100644 --- a/src/node/peerman_args.cpp +++ b/src/node/peerman_args.cpp @@ -12,6 +12,10 @@ void ApplyArgsManOptions(const ArgsManager& argsman, PeerManager::Options& optio if (auto value{argsman.GetIntArg("-maxorphantx")}) { options.max_orphan_txs = uint32_t(std::max(int64_t{0}, *value)); } + + if (auto value{argsman.GetIntArg("-blockreconstructionextratxn")}) { + options.max_extra_txs = size_t(std::max(int64_t{0}, *value)); + } } } // namespace node