diff --git a/src/avalanche/test/peermanager_tests.cpp b/src/avalanche/test/peermanager_tests.cpp --- a/src/avalanche/test/peermanager_tests.cpp +++ b/src/avalanche/test/peermanager_tests.cpp @@ -156,7 +156,7 @@ BOOST_AUTO_TEST_CASE(peer_probabilities) { // No peers. - PeerManager pm; + avalanche::PeerManager pm; BOOST_CHECK_EQUAL(pm.selectNode(), NO_NODE); const NodeId node0 = 42, node1 = 69, node2 = 37; @@ -198,7 +198,7 @@ BOOST_AUTO_TEST_CASE(remove_peer) { // No peers. - PeerManager pm; + avalanche::PeerManager pm; BOOST_CHECK_EQUAL(pm.selectPeer(), NO_PEER); // Add 4 peers. @@ -275,7 +275,7 @@ } BOOST_AUTO_TEST_CASE(compact_slots) { - PeerManager pm; + avalanche::PeerManager pm; // Add 4 peers. std::array peerids; @@ -305,7 +305,7 @@ } BOOST_AUTO_TEST_CASE(node_crud) { - PeerManager pm; + avalanche::PeerManager pm; // Create one peer. Proof proof = buildRandomProof(100000000); @@ -389,7 +389,7 @@ } } - PeerManager pm; + avalanche::PeerManager pm; const auto getPeerId = [&](const std::vector &outpoints) { ProofBuilder pb(0, 0, CPubKey()); for (const auto &o : outpoints) { diff --git a/src/avalanche/test/processor_tests.cpp b/src/avalanche/test/processor_tests.cpp --- a/src/avalanche/test/processor_tests.cpp +++ b/src/avalanche/test/processor_tests.cpp @@ -9,7 +9,7 @@ #include #include #include -#include // For PeerLogicValidation +#include // For ::PeerManager #include // D6970 moved LookupBlockIndex from chain.h to validation.h TODO: remove this // when LookupBlockIndex is refactored out of validation @@ -34,7 +34,7 @@ return p.getSuitableNodeToQuery(); } - static PeerManager &getPeerManager(Processor &p) { + static avalanche::PeerManager &getPeerManager(Processor &p) { LOCK(p.cs_peerManager); return *p.peerManager; } @@ -80,7 +80,7 @@ auto connman = std::make_unique(config, 0x1337, 0x1337); m_connman = connman.get(); m_node.connman = std::move(connman); - m_node.peer_logic = std::make_unique( + m_node.peerman = std::make_unique<::PeerManager>( config.GetChainParams(), *m_connman, m_node.banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool); m_node.chain = interfaces::MakeChain(m_node, config.GetChainParams()); @@ -104,7 +104,7 @@ 0, 0, 0, CAddress(), "", ConnectionType::OUTBOUND); node->SetSendVersion(PROTOCOL_VERSION); node->nServices = nServices; - m_node.peer_logic->InitializeNode(config, node); + m_node.peerman->InitializeNode(config, node); node->nVersion = 1; node->fSuccessfullyConnected = true; @@ -130,7 +130,7 @@ } std::array ConnectNodes() { - PeerManager &pm = getPeerManager(); + avalanche::PeerManager &pm = getPeerManager(); Proof proof = GetProof(); Delegation dg = DelegationBuilder(proof).build(); @@ -153,7 +153,7 @@ return AvalancheTest::getInvsForNextPoll(*m_processor); } - PeerManager &getPeerManager() { + avalanche::PeerManager &getPeerManager() { return AvalancheTest::getPeerManager(*m_processor); } @@ -739,7 +739,7 @@ BOOST_AUTO_TEST_CASE(poll_inflight_count) { // Create enough nodes so that we run into the inflight request limit. - PeerManager &pm = getPeerManager(); + avalanche::PeerManager &pm = getPeerManager(); Proof proof = GetProof(); Delegation dg = DelegationBuilder(proof).build(); diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -212,8 +212,8 @@ // Because these depend on each-other, we make sure that neither can be // using the other before destroying them. - if (node.peer_logic) { - UnregisterValidationInterface(node.peer_logic.get()); + if (node.peerman) { + UnregisterValidationInterface(node.peerman.get()); } // Follow the lock order requirements: // * CheckForStaleTipAndEvictPeers locks cs_main before indirectly calling @@ -243,7 +243,7 @@ // After the threads that potentially access these pointers have been // stopped, destruct and reset all to nullptr. - node.peer_logic.reset(); + node.peerman.reset(); // Destroy various global instances g_avalanche.reset(); @@ -2270,10 +2270,10 @@ node.chainman = &g_chainman; ChainstateManager &chainman = *Assert(node.chainman); - node.peer_logic.reset( - new PeerLogicValidation(chainparams, *node.connman, node.banman.get(), - *node.scheduler, chainman, *node.mempool)); - RegisterValidationInterface(node.peer_logic.get()); + node.peerman.reset(new PeerManager(chainparams, *node.connman, + node.banman.get(), *node.scheduler, + chainman, *node.mempool)); + RegisterValidationInterface(node.peerman.get()); // sanitize comments per BIP-0014, format user agent and check total size std::vector uacomments; @@ -2882,7 +2882,7 @@ connOptions.nBestHeight = chain_active_height; connOptions.uiInterface = &uiInterface; connOptions.m_banman = node.banman.get(); - connOptions.m_msgproc = node.peer_logic.get(); + connOptions.m_msgproc = node.peerman.get(); connOptions.nSendBufferMaxSize = 1000 * args.GetArg("-maxsendbuffer", DEFAULT_MAXSENDBUFFER); connOptions.nReceiveFloodSize = diff --git a/src/net_processing.h b/src/net_processing.h --- a/src/net_processing.h +++ b/src/net_processing.h @@ -33,12 +33,12 @@ * to the discouragement filter. */ static const int DISCOURAGEMENT_THRESHOLD{100}; -class PeerLogicValidation final : public CValidationInterface, - public NetEventsInterface { +class PeerManager final : public CValidationInterface, + public NetEventsInterface { public: - PeerLogicValidation(const CChainParams &chainparams, CConnman &connman, - BanMan *banman, CScheduler &scheduler, - ChainstateManager &chainman, CTxMemPool &pool); + PeerManager(const CChainParams &chainparams, CConnman &connman, + BanMan *banman, CScheduler &scheduler, + ChainstateManager &chainman, CTxMemPool &pool); /** * Overridden from CValidationInterface. diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1047,7 +1047,7 @@ } } -void PeerLogicValidation::InitializeNode(const Config &config, CNode *pnode) { +void PeerManager::InitializeNode(const Config &config, CNode *pnode) { CAddress addr = pnode->addr; std::string addrName = pnode->GetAddrName(); NodeId nodeid = pnode->GetId(); @@ -1069,8 +1069,7 @@ } } -void PeerLogicValidation::ReattemptInitialBroadcast( - CScheduler &scheduler) const { +void PeerManager::ReattemptInitialBroadcast(CScheduler &scheduler) const { std::set unbroadcast_txids = m_mempool.GetUnbroadcastTxs(); for (const TxId &txid : unbroadcast_txids) { @@ -1091,8 +1090,8 @@ delta); } -void PeerLogicValidation::FinalizeNode(const Config &config, NodeId nodeid, - bool &fUpdateConnectionTime) { +void PeerManager::FinalizeNode(const Config &config, NodeId nodeid, + bool &fUpdateConnectionTime) { fUpdateConnectionTime = false; LOCK(cs_main); int misbehavior{0}; @@ -1487,11 +1486,9 @@ STALE_RELAY_AGE_LIMIT); } -PeerLogicValidation::PeerLogicValidation(const CChainParams &chainparams, - CConnman &connman, BanMan *banman, - CScheduler &scheduler, - ChainstateManager &chainman, - CTxMemPool &pool) +PeerManager::PeerManager(const CChainParams &chainparams, CConnman &connman, + BanMan *banman, CScheduler &scheduler, + ChainstateManager &chainman, CTxMemPool &pool) : m_chainparams(chainparams), m_connman(connman), m_banman(banman), m_chainman(chainman), m_mempool(pool), m_stale_tip_check_time(0) { // Initialize global variables that cannot be constructed at startup. @@ -1534,8 +1531,8 @@ * Evict orphan txn pool entries (EraseOrphanTx) based on a newly connected * block. Also save the time of the last tip update. */ -void PeerLogicValidation::BlockConnected( - const std::shared_ptr &pblock, const CBlockIndex *pindex) { +void PeerManager::BlockConnected(const std::shared_ptr &pblock, + const CBlockIndex *pindex) { { LOCK(g_cs_orphans); @@ -1581,8 +1578,8 @@ } } -void PeerLogicValidation::BlockDisconnected( - const std::shared_ptr &block, const CBlockIndex *pindex) { +void PeerManager::BlockDisconnected(const std::shared_ptr &block, + const CBlockIndex *pindex) { // To avoid relay problems with transactions that were previously // confirmed, clear our filter of recently confirmed transactions whenever // there's a reorg. @@ -1608,7 +1605,7 @@ * Maintain state about the best-seen block and fast-announce a compact block * to compatible peers. */ -void PeerLogicValidation::NewPoWValidBlock( +void PeerManager::NewPoWValidBlock( const CBlockIndex *pindex, const std::shared_ptr &pblock) { std::shared_ptr pcmpctblock = std::make_shared(*pblock); @@ -1646,8 +1643,8 @@ if (state.fPreferHeaderAndIDs && !PeerHasHeader(&state, pindex) && PeerHasHeader(&state, pindex->pprev)) { LogPrint(BCLog::NET, "%s sending header-and-ids %s to peer=%d\n", - "PeerLogicValidation::NewPoWValidBlock", - hashBlock.ToString(), pnode->GetId()); + "PeerManager::NewPoWValidBlock", hashBlock.ToString(), + pnode->GetId()); m_connman.PushMessage( pnode, msgMaker.Make(NetMsgType::CMPCTBLOCK, *pcmpctblock)); state.pindexBestHeaderSent = pindex; @@ -1659,9 +1656,9 @@ * Update our best height and announce any block hashes which weren't previously * in ::ChainActive() to our peers. */ -void PeerLogicValidation::UpdatedBlockTip(const CBlockIndex *pindexNew, - const CBlockIndex *pindexFork, - bool fInitialDownload) { +void PeerManager::UpdatedBlockTip(const CBlockIndex *pindexNew, + const CBlockIndex *pindexFork, + bool fInitialDownload) { const int nNewHeight = pindexNew->nHeight; m_connman.SetBestHeight(nNewHeight); @@ -1699,8 +1696,8 @@ * Handle invalid block rejection and consequent peer banning, maintain which * peers announce compact blocks. */ -void PeerLogicValidation::BlockChecked(const CBlock &block, - const BlockValidationState &state) { +void PeerManager::BlockChecked(const CBlock &block, + const BlockValidationState &state) { LOCK(cs_main); const BlockHash hash = block.GetHash(); @@ -2671,10 +2668,10 @@ connman.PushMessage(&peer, std::move(msg)); } -void PeerLogicValidation::ProcessMessage( - const Config &config, CNode &pfrom, const std::string &msg_type, - CDataStream &vRecv, int64_t nTimeReceived, - const std::atomic &interruptMsgProc) { +void PeerManager::ProcessMessage(const Config &config, CNode &pfrom, + const std::string &msg_type, + CDataStream &vRecv, int64_t nTimeReceived, + const std::atomic &interruptMsgProc) { LogPrint(BCLog::NET, "received: %s (%u bytes) peer=%d\n", SanitizeString(msg_type), vRecv.size(), pfrom.GetId()); if (gArgs.IsArgSet("-dropmessagestest") && @@ -4413,7 +4410,7 @@ return; } -bool PeerLogicValidation::MaybeDiscourageAndDisconnect(CNode &pnode) { +bool PeerManager::MaybeDiscourageAndDisconnect(CNode &pnode) { const NodeId peer_id{pnode.GetId()}; PeerRef peer = GetPeerRef(peer_id); if (peer == nullptr) { @@ -4464,8 +4461,8 @@ return true; } -bool PeerLogicValidation::ProcessMessages(const Config &config, CNode *pfrom, - std::atomic &interruptMsgProc) { +bool PeerManager::ProcessMessages(const Config &config, CNode *pfrom, + std::atomic &interruptMsgProc) { // // Message format // (4) message start @@ -4583,8 +4580,7 @@ return fMoreWork; } -void PeerLogicValidation::ConsiderEviction(CNode &pto, - int64_t time_in_seconds) { +void PeerManager::ConsiderEviction(CNode &pto, int64_t time_in_seconds) { AssertLockHeld(cs_main); CNodeState &state = *State(pto.GetId()); @@ -4669,7 +4665,7 @@ } } -void PeerLogicValidation::EvictExtraOutboundPeers(int64_t time_in_seconds) { +void PeerManager::EvictExtraOutboundPeers(int64_t time_in_seconds) { // Check whether we have too many outbound peers int extra_peers = m_connman.GetExtraOutboundCount(); if (extra_peers <= 0) { @@ -4751,7 +4747,7 @@ } } -void PeerLogicValidation::CheckForStaleTipAndEvictPeers( +void PeerManager::CheckForStaleTipAndEvictPeers( const Consensus::Params &consensusParams) { LOCK(cs_main); @@ -4794,8 +4790,8 @@ }; } // namespace -bool PeerLogicValidation::SendMessages(const Config &config, CNode *pto, - std::atomic &interruptMsgProc) { +bool PeerManager::SendMessages(const Config &config, CNode *pto, + std::atomic &interruptMsgProc) { const Consensus::Params &consensusParams = config.GetChainParams().GetConsensus(); diff --git a/src/node/context.h b/src/node/context.h --- a/src/node/context.h +++ b/src/node/context.h @@ -16,7 +16,7 @@ class CScheduler; class CTxMemPool; class ChainstateManager; -class PeerLogicValidation; +class PeerManager; namespace interfaces { class Chain; class ChainClient; @@ -36,7 +36,7 @@ std::unique_ptr connman; // Currently a raw pointer because the memory is not managed by this struct CTxMemPool *mempool{nullptr}; - std::unique_ptr peer_logic; + std::unique_ptr peerman; // Currently a raw pointer because the memory is not managed by this struct ChainstateManager *chainman{nullptr}; std::unique_ptr banman; diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -78,7 +78,7 @@ std::atomic interruptDummy(false); auto connman = std::make_unique(config, 0x1337, 0x1337); - auto peerLogic = std::make_unique( + auto peerLogic = std::make_unique( config.GetChainParams(), *connman, nullptr, *m_node.scheduler, *m_node.chainman, *m_node.mempool); @@ -142,7 +142,7 @@ static void AddRandomOutboundPeer(const Config &config, std::vector &vNodes, - PeerLogicValidation &peerLogic, + PeerManager &peerLogic, CConnmanTest *connman) { CAddress addr(ip(g_insecure_rand_ctx.randbits(32)), NODE_NONE); vNodes.emplace_back(new CNode(id++, ServiceFlags(NODE_NETWORK), 0, @@ -162,7 +162,7 @@ const Config &config = GetConfig(); auto connman = std::make_unique(config, 0x1337, 0x1337); - auto peerLogic = std::make_unique( + auto peerLogic = std::make_unique( config.GetChainParams(), *connman, nullptr, *m_node.scheduler, *m_node.chainman, *m_node.mempool); @@ -242,7 +242,7 @@ config.GetChainParams(), nullptr, DEFAULT_MISBEHAVING_BANTIME); auto connman = std::make_unique(config, 0x1337, 0x1337); - auto peerLogic = std::make_unique( + auto peerLogic = std::make_unique( config.GetChainParams(), *connman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool); @@ -305,7 +305,7 @@ config.GetChainParams(), nullptr, DEFAULT_MISBEHAVING_BANTIME); auto connman = std::make_unique(config, 0x1337, 0x1337); - auto peerLogic = std::make_unique( + auto peerLogic = std::make_unique( config.GetChainParams(), *connman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool); diff --git a/src/test/fuzz/process_message.cpp b/src/test/fuzz/process_message.cpp --- a/src/test/fuzz/process_message.cpp +++ b/src/test/fuzz/process_message.cpp @@ -83,9 +83,9 @@ p2p_node.nVersion = PROTOCOL_VERSION; p2p_node.SetSendVersion(PROTOCOL_VERSION); connman.AddTestNode(p2p_node); - g_setup->m_node.peer_logic->InitializeNode(config, &p2p_node); + g_setup->m_node.peerman->InitializeNode(config, &p2p_node); try { - g_setup->m_node.peer_logic->ProcessMessage( + g_setup->m_node.peerman->ProcessMessage( config, p2p_node, random_message_type, random_bytes_data_stream, GetTimeMillis(), std::atomic{false}); } catch (const std::ios_base::failure &) { diff --git a/src/test/fuzz/process_messages.cpp b/src/test/fuzz/process_messages.cpp --- a/src/test/fuzz/process_messages.cpp +++ b/src/test/fuzz/process_messages.cpp @@ -62,7 +62,7 @@ p2p_node.fPauseSend = false; p2p_node.nVersion = PROTOCOL_VERSION; p2p_node.SetSendVersion(PROTOCOL_VERSION); - g_setup->m_node.peer_logic->InitializeNode(config, &p2p_node); + g_setup->m_node.peerman->InitializeNode(config, &p2p_node); connman.AddTestNode(p2p_node); } diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp --- a/src/test/util/setup_common.cpp +++ b/src/test/util/setup_common.cpp @@ -204,12 +204,12 @@ nullptr, DEFAULT_MISBEHAVING_BANTIME); // Deterministic randomness for tests. m_node.connman = std::make_unique(config, 0x1337, 0x1337); - m_node.peer_logic = std::make_unique( + m_node.peerman = std::make_unique( chainparams, *m_node.connman, m_node.banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool); { CConnman::Options options; - options.m_msgproc = m_node.peer_logic.get(); + options.m_msgproc = m_node.peerman.get(); m_node.connman->Init(options); } } diff --git a/test/sanitizer_suppressions/tsan b/test/sanitizer_suppressions/tsan --- a/test/sanitizer_suppressions/tsan +++ b/test/sanitizer_suppressions/tsan @@ -11,7 +11,7 @@ mutex:CConnman::ThreadOpenAddedConnections mutex:CConnman::SocketHandler mutex:UpdateTip -mutex:PeerLogicValidation::UpdatedBlockTip +mutex:PeerManager::UpdatedBlockTip mutex:rcu_tests::synchronize_test # race (TODO fix) race:CConnman::WakeMessageHandler