mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-18 10:21:03 +03:00
Sending without a congestion window, a T3-rtx resent everything in flight, and on a 5 Mbps link with 300-500ms stalls that spiralled: seconds of latency and several times the bytes. The fork now resends everything outstanding on a timeout only when it packs into four packets; otherwise it resends one packet and withholds the rest until the SACKs settle them (RFC 4960 6.3.3 E3, F-RTO): an original acked takes the marks off, a first transmission made after the timeout acked with the rest still missing sends them, and with nothing else to tell, a probe acked no sooner than the least RTT after it went out draws the next probe, two of them settling the rest as lost. A restarted RTO is counted from the latest send as QUIC does, backs off from the full RTO, and floors at KCP's 30ms with srtt + 25ms at the least. Lost tails of up to four packets and sparse small messages under loss now recover at KCP's pace where they trailed it by a frame; a stall no longer resends the backlog behind itself. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019aokqJuhjvB3kijXtAg5Ns
263 KiB
263 KiB