Skip to content

Commit 1d9b7fa

Browse files
committed
refactor: trim globals use in net processing functions
1 parent 2a4fdbf commit 1d9b7fa

File tree

5 files changed

+43
-25
lines changed

5 files changed

+43
-25
lines changed

src/init.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,8 +1735,9 @@ bool AppInitMain(const CoreContext& context, NodeContext& node, interfaces::Bloc
17351735

17361736
assert(!node.peerman);
17371737
node.peerman = PeerManager::make(chainparams, *node.connman, *node.addrman, node.banman.get(),
1738-
*node.scheduler, chainman, *node.mempool, *node.govman, *node.sporkman,
1739-
::deterministicMNManager, node.cj_ctx, node.llmq_ctx, ignores_incoming_txs);
1738+
*node.scheduler, chainman, *node.mempool, *node.mn_metaman, *node.mn_sync,
1739+
*node.govman, *node.sporkman, ::deterministicMNManager,
1740+
node.cj_ctx, node.llmq_ctx, ignores_incoming_txs);
17401741
RegisterValidationInterface(node.peerman.get());
17411742

17421743
// sanitize comments per BIP-0014, format user agent and check total size

src/net_processing.cpp

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,10 @@ using PeerRef = std::shared_ptr<Peer>;
293293
class PeerManagerImpl final : public PeerManager
294294
{
295295
public:
296-
PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
297-
BanMan* banman, CScheduler &scheduler, ChainstateManager& chainman,
298-
CTxMemPool& pool, CGovernanceManager& govman, CSporkManager& sporkman,
296+
PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman, BanMan* banman,
297+
CScheduler &scheduler, ChainstateManager& chainman, CTxMemPool& pool,
298+
CMasternodeMetaMan& mn_metaman, CMasternodeSync& mn_sync,
299+
CGovernanceManager& govman, CSporkManager& sporkman,
299300
const std::unique_ptr<CDeterministicMNManager>& dmnman,
300301
const std::unique_ptr<CJContext>& cj_ctx,
301302
const std::unique_ptr<LLMQContext>& llmq_ctx,
@@ -418,6 +419,8 @@ class PeerManagerImpl final : public PeerManager
418419
const std::unique_ptr<CDeterministicMNManager>& m_dmnman;
419420
const std::unique_ptr<CJContext>& m_cj_ctx;
420421
const std::unique_ptr<LLMQContext>& m_llmq_ctx;
422+
CMasternodeMetaMan& m_mn_metaman;
423+
CMasternodeSync& m_mn_sync;
421424
CGovernanceManager& m_govman;
422425
CSporkManager& m_sporkman;
423426

@@ -1730,18 +1733,22 @@ bool PeerManagerImpl::BlockRequestAllowed(const CBlockIndex* pindex)
17301733

17311734
std::unique_ptr<PeerManager> PeerManager::make(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman, BanMan* banman,
17321735
CScheduler &scheduler, ChainstateManager& chainman, CTxMemPool& pool,
1736+
CMasternodeMetaMan& mn_metaman, CMasternodeSync& mn_sync,
17331737
CGovernanceManager& govman, CSporkManager& sporkman,
17341738
const std::unique_ptr<CDeterministicMNManager>& dmnman,
17351739
const std::unique_ptr<CJContext>& cj_ctx,
17361740
const std::unique_ptr<LLMQContext>& llmq_ctx, bool ignore_incoming_txs)
17371741
{
1738-
return std::make_unique<PeerManagerImpl>(chainparams, connman, addrman, banman, scheduler, chainman, pool, govman, sporkman, dmnman, cj_ctx, llmq_ctx, ignore_incoming_txs);
1742+
return std::make_unique<PeerManagerImpl>(chainparams, connman, addrman, banman, scheduler, chainman, pool, mn_metaman, mn_sync, govman, sporkman, dmnman, cj_ctx, llmq_ctx, ignore_incoming_txs);
17391743
}
17401744

17411745
PeerManagerImpl::PeerManagerImpl(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman, BanMan* banman,
17421746
CScheduler &scheduler, ChainstateManager& chainman, CTxMemPool& pool,
1743-
CGovernanceManager& govman, CSporkManager& sporkman, const std::unique_ptr<CDeterministicMNManager>& dmnman,
1744-
const std::unique_ptr<CJContext>& cj_ctx, const std::unique_ptr<LLMQContext>& llmq_ctx,
1747+
CMasternodeMetaMan& mn_metaman, CMasternodeSync& mn_sync,
1748+
CGovernanceManager& govman, CSporkManager& sporkman,
1749+
const std::unique_ptr<CDeterministicMNManager>& dmnman,
1750+
const std::unique_ptr<CJContext>& cj_ctx,
1751+
const std::unique_ptr<LLMQContext>& llmq_ctx,
17451752
bool ignore_incoming_txs)
17461753
: m_chainparams(chainparams),
17471754
m_connman(connman),
@@ -1752,6 +1759,8 @@ PeerManagerImpl::PeerManagerImpl(const CChainParams& chainparams, CConnman& conn
17521759
m_dmnman(dmnman),
17531760
m_cj_ctx(cj_ctx),
17541761
m_llmq_ctx(llmq_ctx),
1762+
m_mn_metaman(mn_metaman),
1763+
m_mn_sync(mn_sync),
17551764
m_govman(govman),
17561765
m_sporkman(sporkman),
17571766
m_ignore_incoming_txs(ignore_incoming_txs)
@@ -2950,9 +2959,9 @@ void PeerManagerImpl::ProcessGetCFCheckPt(CNode& peer, CDataStream& vRecv)
29502959
}
29512960

29522961
std::pair<bool /*ret*/, bool /*do_return*/> static ValidateDSTX(CDeterministicMNManager& dmnman, CDSTXManager& dstxman, ChainstateManager& chainman,
2953-
CTxMemPool& mempool, CCoinJoinBroadcastTx& dstx, uint256 hashTx)
2962+
CMasternodeMetaMan& mn_metaman, CTxMemPool& mempool, CCoinJoinBroadcastTx& dstx, uint256 hashTx)
29542963
{
2955-
assert(::mmetaman != nullptr);
2964+
assert(mn_metaman.IsValid());
29562965

29572966
if (!dstx.IsValidStructure()) {
29582967
LogPrint(BCLog::COINJOIN, "DSTX -- Invalid DSTX structure: %s\n", hashTx.ToString());
@@ -2996,7 +3005,7 @@ std::pair<bool /*ret*/, bool /*do_return*/> static ValidateDSTX(CDeterministicMN
29963005
return {false, true};
29973006
}
29983007

2999-
if (!mmetaman->GetMetaInfo(dmn->proTxHash)->IsValidForMixingTxes()) {
3008+
if (!mn_metaman.GetMetaInfo(dmn->proTxHash)->IsValidForMixingTxes()) {
30003009
LogPrint(BCLog::COINJOIN, "DSTX -- Masternode %s is sending too many transactions %s\n", dstx.masternodeOutpoint.ToStringShort(), hashTx.ToString());
30013010
return {true, true};
30023011
// TODO: Not an error? Could it be that someone is relaying old DSTXes
@@ -3010,7 +3019,7 @@ std::pair<bool /*ret*/, bool /*do_return*/> static ValidateDSTX(CDeterministicMN
30103019

30113020
LogPrint(BCLog::COINJOIN, "DSTX -- Got Masternode transaction %s\n", hashTx.ToString());
30123021
mempool.PrioritiseTransaction(hashTx, 0.1*COIN);
3013-
mmetaman->DisallowMixing(dmn->proTxHash);
3022+
mn_metaman.DisallowMixing(dmn->proTxHash);
30143023

30153024
return {true, false};
30163025
}
@@ -3822,7 +3831,7 @@ void PeerManagerImpl::ProcessMessage(
38223831
if (nInvType == MSG_DSTX) {
38233832
// Validate DSTX and return bRet if we need to return from here
38243833
uint256 hashTx = tx.GetHash();
3825-
const auto& [bRet, bDoReturn] = ValidateDSTX(*m_dmnman, *(m_cj_ctx->dstxman), m_chainman, m_mempool, dstx, hashTx);
3834+
const auto& [bRet, bDoReturn] = ValidateDSTX(*m_dmnman, *(m_cj_ctx->dstxman), m_chainman, m_mn_metaman, m_mempool, dstx, hashTx);
38263835
if (bDoReturn) {
38273836
return;
38283837
}
@@ -4614,7 +4623,7 @@ void PeerManagerImpl::ProcessMessage(
46144623
#endif // ENABLE_WALLET
46154624
ProcessPeerMsgRet(m_cj_ctx->server->ProcessMessage(pfrom, msg_type, vRecv), pfrom);
46164625
ProcessPeerMsgRet(m_sporkman.ProcessMessage(pfrom, m_connman, msg_type, vRecv), pfrom);
4617-
::masternodeSync->ProcessMessage(pfrom, msg_type, vRecv);
4626+
m_mn_sync.ProcessMessage(pfrom, msg_type, vRecv);
46184627
ProcessPeerMsgRet(m_govman.ProcessMessage(pfrom, m_connman, msg_type, vRecv), pfrom);
46194628
ProcessPeerMsgRet(CMNAuth::ProcessMessage(pfrom, m_connman, m_dmnman->GetListAtChainTip(), msg_type, vRecv), pfrom);
46204629
ProcessPeerMsgRet(m_llmq_ctx->quorum_block_processor->ProcessMessage(pfrom, msg_type, vRecv), pfrom);

src/net_processing.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
class CAddrMan;
1616
class CTxMemPool;
1717
class CDeterministicMNManager;
18+
class CMasternodeMetaMan;
19+
class CMasternodeSync;
1820
class ChainstateManager;
1921
class CCoinJoinServer;
2022
class CGovernanceManager;
@@ -48,7 +50,8 @@ class PeerManager : public CValidationInterface, public NetEventsInterface
4850
public:
4951
static std::unique_ptr<PeerManager> make(const CChainParams& chainparams, CConnman& connman, CAddrMan& addrman,
5052
BanMan* banman, CScheduler &scheduler, ChainstateManager& chainman,
51-
CTxMemPool& pool, CGovernanceManager& govman, CSporkManager& sporkman,
53+
CTxMemPool& pool, CMasternodeMetaMan& mn_metaman, CMasternodeSync& mn_sync,
54+
CGovernanceManager& govman, CSporkManager& sporkman,
5255
const std::unique_ptr<CDeterministicMNManager>& dmnman,
5356
const std::unique_ptr<CJContext>& cj_ctx,
5457
const std::unique_ptr<LLMQContext>& llmq_ctx, bool ignore_incoming_txs);

src/test/denialofservice_tests.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
6565
const CChainParams& chainparams = Params();
6666
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
6767
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr, *m_node.scheduler,
68-
*m_node.chainman, *m_node.mempool, *m_node.govman, *m_node.sporkman,
69-
::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx, false);
68+
*m_node.chainman, *m_node.mempool, *m_node.mn_metaman, *m_node.mn_sync,
69+
*m_node.govman, *m_node.sporkman, ::deterministicMNManager,
70+
m_node.cj_ctx, m_node.llmq_ctx, /* ignore_incoming_txs = */ false);
7071

7172
// Mock an outbound peer
7273
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -136,8 +137,9 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
136137
const CChainParams& chainparams = Params();
137138
auto connman = std::make_unique<ConnmanTestMsg>(0x1337, 0x1337, *m_node.addrman);
138139
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr, *m_node.scheduler,
139-
*m_node.chainman, *m_node.mempool, *m_node.govman, *m_node.sporkman,
140-
::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx, false);
140+
*m_node.chainman, *m_node.mempool, *m_node.mn_metaman, *m_node.mn_sync,
141+
*m_node.govman, *m_node.sporkman, ::deterministicMNManager,
142+
m_node.cj_ctx, m_node.llmq_ctx, /* ignore_incoming_txs = */ false);
141143

142144
constexpr int max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS;
143145
CConnman::Options options;
@@ -210,8 +212,9 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
210212
auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist", nullptr, DEFAULT_MISBEHAVING_BANTIME);
211213
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
212214
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(), *m_node.scheduler,
213-
*m_node.chainman, *m_node.mempool, *m_node.govman, *m_node.sporkman,
214-
::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx, false);
215+
*m_node.chainman, *m_node.mempool, *m_node.mn_metaman, *m_node.mn_sync,
216+
*m_node.govman, *m_node.sporkman, ::deterministicMNManager,
217+
m_node.cj_ctx, m_node.llmq_ctx, /* ignore_incoming_txs = */ false);
215218

216219
banman->ClearBanned();
217220
CAddress addr1(ip(0xa0b0c001), NODE_NONE);
@@ -257,8 +260,9 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
257260
auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist", nullptr, DEFAULT_MISBEHAVING_BANTIME);
258261
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
259262
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(), *m_node.scheduler,
260-
*m_node.chainman, *m_node.mempool, *m_node.govman, *m_node.sporkman,
261-
::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx, false);
263+
*m_node.chainman, *m_node.mempool, *m_node.mn_metaman, *m_node.mn_sync,
264+
*m_node.govman, *m_node.sporkman, ::deterministicMNManager,
265+
m_node.cj_ctx, m_node.llmq_ctx, /* ignore_incoming_txs = */ false);
262266

263267
banman->ClearBanned();
264268
int64_t nStartTime = GetTime();

src/test/util/setup_common.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,9 @@ TestingSetup::TestingSetup(const std::string& chainName, const std::vector<const
283283

284284
m_node.banman = std::make_unique<BanMan>(GetDataDir() / "banlist", nullptr, DEFAULT_MISBEHAVING_BANTIME);
285285
m_node.peerman = PeerManager::make(chainparams, *m_node.connman, *m_node.addrman, m_node.banman.get(),
286-
*m_node.scheduler, *m_node.chainman, *m_node.mempool, *m_node.govman,
287-
*m_node.sporkman, ::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx, false);
286+
*m_node.scheduler, *m_node.chainman, *m_node.mempool, *m_node.mn_metaman, *m_node.mn_sync,
287+
*m_node.govman, *m_node.sporkman, ::deterministicMNManager, m_node.cj_ctx, m_node.llmq_ctx,
288+
/* ignore_incoming_txs = */ false);
288289
{
289290
CConnman::Options options;
290291
options.m_msgproc = m_node.peerman.get();

0 commit comments

Comments
 (0)