diff options
author | Martin Zumsande <mzumsande@gmail.com> | 2021-05-31 22:49:42 +0200 |
---|---|---|
committer | Martin Zumsande <mzumsande@gmail.com> | 2021-07-12 02:16:45 +0200 |
commit | c34ad3309f93979b274a37de013502b05d25fad8 (patch) | |
tree | 003e8754ab4add0aadc72107983134560a6ec851 /src/net.cpp | |
parent | 533500d9072b7d5a36a6491784bdeb9247e91fb0 (diff) | |
download | bitcoin-c34ad3309f93979b274a37de013502b05d25fad8.tar.xz |
net, rpc: Enable AddrFetch connections for functional testing
Co-authored-by: Amiti Uttarwar <amiti@uttarwar.org>
Diffstat (limited to 'src/net.cpp')
-rw-r--r-- | src/net.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/net.cpp b/src/net.cpp index 1b6f04dead..a43fe9cdf6 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1166,16 +1166,29 @@ void CConnman::CreateNodeFromAcceptedSocket(SOCKET hSocket, bool CConnman::AddConnection(const std::string& address, ConnectionType conn_type) { - if (conn_type != ConnectionType::OUTBOUND_FULL_RELAY && conn_type != ConnectionType::BLOCK_RELAY) return false; - - const int max_connections = conn_type == ConnectionType::OUTBOUND_FULL_RELAY ? m_max_outbound_full_relay : m_max_outbound_block_relay; + std::optional<int> max_connections; + switch (conn_type) { + case ConnectionType::INBOUND: + case ConnectionType::MANUAL: + case ConnectionType::FEELER: + return false; + case ConnectionType::OUTBOUND_FULL_RELAY: + max_connections = m_max_outbound_full_relay; + break; + case ConnectionType::BLOCK_RELAY: + max_connections = m_max_outbound_block_relay; + break; + // no limit for ADDR_FETCH because -seednode has no limit either + case ConnectionType::ADDR_FETCH: + break; + } // no default case, so the compiler can warn about missing cases // Count existing connections int existing_connections = WITH_LOCK(cs_vNodes, return std::count_if(vNodes.begin(), vNodes.end(), [conn_type](CNode* node) { return node->m_conn_type == conn_type; });); // Max connections of specified type already exist - if (existing_connections >= max_connections) return false; + if (max_connections != std::nullopt && existing_connections >= max_connections) return false; // Max total outbound connections already exist CSemaphoreGrant grant(*semOutbound, true); |