mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
476e441057
* fix(terminal): raise SSH flow high-water mark to stop WAN pause ping-pong (#1961) Bulk terminal output over SSH (e.g. `tail -2000f big.log`) was far slower than other clients on high-latency links. The renderer's output flow control pauses the source stream once its unacked backlog crosses FLOW_HIGH_WATER_MARK (previously 100KB). For SSH the source is the ssh2 channel, so pause() stops the remote until resume() plus a full round-trip. ssh2's own channel window is 2MB (WINDOW_THRESHOLD 1MB), so a 100KB watermark made Netcatty pause/resume dozens of times during a multi-MB dump — a 4MB dump triggered ~61 pause cycles, each costing ~1 RTT. At 300ms RTT that turned a ~2s dump into ~21s. Raise FLOW_HIGH_WATER_MARK to 1MB so it sits near the ssh2 window; the same 4MB dump now settles in ~4 pause cycles (~2-3s at 300ms RTT) while still bounding renderer memory. FLOW_LOW_WATER_MARK stays at 8KB to keep interactive acks responsive. Co-authored-by: Cursor <cursoragent@cursor.com> * test(terminal): align deferred-ack test with 1MB flow high-water mark The deferred IPC ack batch threshold (XTERM_WRITE_CALLBACK_BATCH_BYTES) now sits far below FLOW_HIGH_WATER_MARK, so deferral alone can no longer accumulate up to the watermark. Assert the batch-flush invariant instead. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>