1.6.0
tagged this
10 Jun 04:42
The SSH protocol never advertises how many simultaneous connections a server accepts (sshd MaxStartups is private) — you only find out when handshakes start getting dropped. Instead of a fixed parallel_connections guess plus reactive retries, batches now use TCP-style congestion control: - _AdaptiveLimiter gates worker concurrency with a condition variable - Rate-limit rejections (kex_exchange_identification / connection closed) HALVE the limit — a burst of parallel rejections counts as one event - A clean streak of ~3 ops per slot probes the limit back up by one - parallel_connections now acts as the maximum, not a blind constant - Panel logs each adjustment so the user can see the negotiation New is_rate_limit() in errors.py distinguishes rate-limiting signatures from plain timeouts (which don't imply too much concurrency).