interceptAccept method
Tests whether an incipient inbound Conn is allowed.
This is called by the upgrader, or by the transport directly, straight after it has accepted a Conn from its socket.
Implementation
@override
bool interceptAccept(Conn conn) {
if (isConnBlocked(conn.id)) {
_logger.fine('Blocked connection accept: ${conn.id}');
return false;
}
// Check total connection limit
if (_activeConnections.length >= _maxConnections) {
_logger.fine('Connection limit reached: ${_activeConnections.length} connections');
return false;
}
// Check per-peer connection limit
final peerIdStr = conn.remotePeer.toString();
final peerConns = _peerConnections[peerIdStr] ?? {};
if (peerConns.length >= _maxConnectionsPerPeer) {
_logger.fine('Per-peer connection limit reached for peer $peerIdStr: ${peerConns.length} connections');
return false;
}
// Track the connection
_activeConnections.add(conn.id);
_peerConnections[peerIdStr] = peerConns..add(conn.id);
_setupConnectionTimeout(conn.id);
_recordConnectionMetrics(conn.id, conn.remotePeer);
return true;
}