mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-10 00:26:59 +00:00
tcp: drive inbound connection cap from node.limits.max_connections
The per-transport TCP inbound cap was hardwired to 256 and never read node.limits.max_connections, so raising max_connections was a silent no-op for inbound TCP. Resolve the effective cap with precedence: explicit per-transport max_inbound_connections, then node-wide max_connections, then the built-in default of 256. Established peers remain bounded node-wide by add_connection, so deriving the per-transport raw-accept ceiling from max_connections does not admit more real peers across multiple transports. Add effective_max_inbound on the TCP transport with a node_max_connections setter wired from create_transports, plus a precedence unit test.
This commit is contained in:
+7
-1
@@ -832,9 +832,15 @@ impl Node {
|
||||
.map(|(name, config)| (name.map(|s| s.to_string()), config.clone()))
|
||||
.collect();
|
||||
|
||||
// Node-wide connection budget — used as the TCP inbound-cap fallback
|
||||
// when a TCP instance has no explicit `max_inbound_connections`, so
|
||||
// raising `node.limits.max_connections` actually raises the inbound
|
||||
// ceiling rather than being silently capped at the transport default.
|
||||
let node_max_connections = self.config.node.limits.max_connections;
|
||||
for (name, tcp_config) in tcp_instances {
|
||||
let transport_id = self.allocate_transport_id();
|
||||
let tcp = TcpTransport::new(transport_id, name, tcp_config, packet_tx.clone());
|
||||
let mut tcp = TcpTransport::new(transport_id, name, tcp_config, packet_tx.clone());
|
||||
tcp.set_node_max_connections(node_max_connections);
|
||||
transports.push(TransportHandle::Tcp(tcp));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user