From c25e0e05550426f29d79571368d90f63fb472b02 Mon Sep 17 00:00:00 2001 From: Amiti Uttarwar Date: Thu, 31 Aug 2023 13:40:37 -0700 Subject: [PATCH] net, refactor: move calculations for connection type limits into connman Currently the logic is fragmented between init and connman. Encapsulating this logic within connman allows for less mental overhead and easier reuse in tests. Co-authored-by: Martin Zumsande --- src/init.cpp | 4 ---- src/net.h | 16 +++++----------- src/test/denialofservice_tests.cpp | 4 ---- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index a0b4425898..1c8771133d 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1749,10 +1749,6 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info) CConnman::Options connOptions; connOptions.nLocalServices = nLocalServices; connOptions.nMaxConnections = nMaxConnections; - connOptions.m_max_outbound_full_relay = std::min(MAX_OUTBOUND_FULL_RELAY_CONNECTIONS, connOptions.nMaxConnections); - connOptions.m_max_outbound_block_relay = std::min(MAX_BLOCK_RELAY_ONLY_CONNECTIONS, connOptions.nMaxConnections-connOptions.m_max_outbound_full_relay); - connOptions.nMaxAddnode = MAX_ADDNODE_CONNECTIONS; - connOptions.nMaxFeeler = MAX_FEELER_CONNECTIONS; connOptions.uiInterface = &uiInterface; connOptions.m_banman = node.banman.get(); connOptions.m_msgproc = node.peerman.get(); diff --git a/src/net.h b/src/net.h index 2f7b832fba..46ab8dad33 100644 --- a/src/net.h +++ b/src/net.h @@ -1058,10 +1058,6 @@ public: { ServiceFlags nLocalServices = NODE_NONE; int nMaxConnections = 0; - int m_max_outbound_full_relay = 0; - int m_max_outbound_block_relay = 0; - int nMaxAddnode = 0; - int nMaxFeeler = 0; CClientUIInterface* uiInterface = nullptr; NetEventsInterface* m_msgproc = nullptr; BanMan* m_banman = nullptr; @@ -1089,12 +1085,10 @@ public: nLocalServices = connOptions.nLocalServices; nMaxConnections = connOptions.nMaxConnections; - m_max_outbound_full_relay = std::min(connOptions.m_max_outbound_full_relay, connOptions.nMaxConnections); - m_max_outbound_block_relay = connOptions.m_max_outbound_block_relay; - m_use_addrman_outgoing = connOptions.m_use_addrman_outgoing; - nMaxAddnode = connOptions.nMaxAddnode; - nMaxFeeler = connOptions.nMaxFeeler; + m_max_outbound_full_relay = std::min(MAX_OUTBOUND_FULL_RELAY_CONNECTIONS, nMaxConnections); + m_max_outbound_block_relay = std::min(MAX_BLOCK_RELAY_ONLY_CONNECTIONS, nMaxConnections - m_max_outbound_full_relay); m_max_outbound = m_max_outbound_full_relay + m_max_outbound_block_relay + nMaxFeeler; + m_use_addrman_outgoing = connOptions.m_use_addrman_outgoing; m_client_interface = connOptions.uiInterface; m_banman = connOptions.m_banman; m_msgproc = connOptions.m_msgproc; @@ -1488,8 +1482,8 @@ private: // We do not relay tx or addr messages with these peers int m_max_outbound_block_relay; - int nMaxAddnode; - int nMaxFeeler; + int nMaxAddnode{MAX_ADDNODE_CONNECTIONS}; + int nMaxFeeler{MAX_FEELER_CONNECTIONS}; int m_max_outbound; bool m_use_addrman_outgoing; CClientUIInterface* m_client_interface; diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp index 6e740a4f53..2abbaf1b23 100644 --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -148,8 +148,6 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management) constexpr int max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS; CConnman::Options options; options.nMaxConnections = DEFAULT_MAX_PEER_CONNECTIONS; - options.m_max_outbound_full_relay = max_outbound_full_relay; - options.nMaxFeeler = MAX_FEELER_CONNECTIONS; const auto time_init{GetTime()}; SetMockTime(time_init); @@ -249,8 +247,6 @@ BOOST_AUTO_TEST_CASE(block_relay_only_eviction) constexpr int64_t MINIMUM_CONNECT_TIME{30}; CConnman::Options options; options.nMaxConnections = DEFAULT_MAX_PEER_CONNECTIONS; - options.m_max_outbound_full_relay = MAX_OUTBOUND_FULL_RELAY_CONNECTIONS; - options.m_max_outbound_block_relay = max_outbound_block_relay; connman->Init(options); std::vector vNodes;