aboutsummaryrefslogtreecommitdiff
path: root/src/net.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/net.h')
-rw-r--r--src/net.h42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/net.h b/src/net.h
index ddee34168a..16312cf72d 100644
--- a/src/net.h
+++ b/src/net.h
@@ -372,7 +372,7 @@ public:
class V1Transport final : public Transport
{
private:
- MessageStartChars m_magic_bytes;
+ const MessageStartChars m_magic_bytes;
const NodeId m_node_id; // Only for logging
mutable Mutex m_recv_mutex; //!< Lock for receive state
mutable CHash256 hasher GUARDED_BY(m_recv_mutex);
@@ -1045,11 +1045,7 @@ public:
struct Options
{
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;
+ int m_max_automatic_connections = 0;
CClientUIInterface* uiInterface = nullptr;
NetEventsInterface* m_msgproc = nullptr;
BanMan* m_banman = nullptr;
@@ -1076,13 +1072,12 @@ public:
AssertLockNotHeld(m_total_bytes_sent_mutex);
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_max_automatic_connections = connOptions.m_max_automatic_connections;
+ m_max_outbound_full_relay = std::min(MAX_OUTBOUND_FULL_RELAY_CONNECTIONS, m_max_automatic_connections);
+ m_max_outbound_block_relay = std::min(MAX_BLOCK_RELAY_ONLY_CONNECTIONS, m_max_automatic_connections - m_max_outbound_full_relay);
+ m_max_automatic_outbound = m_max_outbound_full_relay + m_max_outbound_block_relay + m_max_feeler;
+ m_max_inbound = std::max(0, m_max_automatic_connections - m_max_automatic_outbound);
m_use_addrman_outgoing = connOptions.m_use_addrman_outgoing;
- nMaxAddnode = connOptions.nMaxAddnode;
- nMaxFeeler = connOptions.nMaxFeeler;
- m_max_outbound = m_max_outbound_full_relay + m_max_outbound_block_relay + nMaxFeeler;
m_client_interface = connOptions.uiInterface;
m_banman = connOptions.m_banman;
m_msgproc = connOptions.m_msgproc;
@@ -1189,7 +1184,7 @@ public:
bool AddNode(const AddedNodeParams& add) EXCLUSIVE_LOCKS_REQUIRED(!m_added_nodes_mutex);
bool RemoveAddedNode(const std::string& node) EXCLUSIVE_LOCKS_REQUIRED(!m_added_nodes_mutex);
- std::vector<AddedNodeInfo> GetAddedNodeInfo() const EXCLUSIVE_LOCKS_REQUIRED(!m_added_nodes_mutex);
+ std::vector<AddedNodeInfo> GetAddedNodeInfo(bool include_connected) const EXCLUSIVE_LOCKS_REQUIRED(!m_added_nodes_mutex);
/**
* Attempts to open a connection. Currently only used from tests.
@@ -1466,7 +1461,18 @@ private:
std::unique_ptr<CSemaphore> semOutbound;
std::unique_ptr<CSemaphore> semAddnode;
- int nMaxConnections;
+
+ /**
+ * Maximum number of automatic connections permitted, excluding manual
+ * connections but including inbounds. May be changed by the user and is
+ * potentially limited by the operating system (number of file descriptors).
+ */
+ int m_max_automatic_connections;
+
+ /*
+ * Maximum number of peers by connection type. Might vary from defaults
+ * based on -maxconnections init value.
+ */
// How many full-relay (tx, block, addr) outbound peers we want
int m_max_outbound_full_relay;
@@ -1475,9 +1481,11 @@ private:
// We do not relay tx or addr messages with these peers
int m_max_outbound_block_relay;
- int nMaxAddnode;
- int nMaxFeeler;
- int m_max_outbound;
+ int m_max_addnode{MAX_ADDNODE_CONNECTIONS};
+ int m_max_feeler{MAX_FEELER_CONNECTIONS};
+ int m_max_automatic_outbound;
+ int m_max_inbound;
+
bool m_use_addrman_outgoing;
CClientUIInterface* m_client_interface;
NetEventsInterface* m_msgproc;