From 62694cb43d403852034b5084dcdcb2cfd66cc9b9 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Wed, 26 Aug 2026 22:24:00 +0800 Subject: [PATCH] webrtc: correct the RTT variance floor to dcsctp's scaling The earlier commit took dcsctp's min_rtt_variance = 220 as a raw floor under rttvar. dcsctp divides the option by kHeuristicVarianceAdjustment = 8.0 first, a historical accident it kept because downstream users had measured good values with it, so the intended floor is 27.5ms of variance contributing 110ms to RTO. Flooring at 220 contributed 880ms instead, which on a 50ms path left RTO within 7% of the 1000ms default this change exists to escape. The fork also now records why T1/T2 share T3's RTO manager here, unlike dcsctp's separate control timers: RTO_INITIAL is the T3 value for the first DATA chunk, since no RTT sample exists before the first SACK. --- Cargo.lock | 4 ++-- Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77a32b0be..c0a6ede69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9706,7 +9706,7 @@ dependencies = [ [[package]] name = "webrtc-sctp" version = "0.12.0" -source = "git+https://github.com/rustdesk-org/webrtc?rev=56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833#56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833" +source = "git+https://github.com/rustdesk-org/webrtc?rev=0a84ba37fbca940b82f230fb469d1b3a3172abf6#0a84ba37fbca940b82f230fb469d1b3a3172abf6" dependencies = [ "arc-swap", "async-trait", @@ -9746,7 +9746,7 @@ dependencies = [ [[package]] name = "webrtc-util" version = "0.11.0" -source = "git+https://github.com/rustdesk-org/webrtc?rev=56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833#56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833" +source = "git+https://github.com/rustdesk-org/webrtc?rev=0a84ba37fbca940b82f230fb469d1b3a3172abf6#0a84ba37fbca940b82f230fb469d1b3a3172abf6" dependencies = [ "async-trait", "bitflags 1.3.2", diff --git a/Cargo.toml b/Cargo.toml index 3b874845d..037b973b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -222,8 +222,8 @@ libxdo-sys = { path = "libs/libxdo-sys-stub" } # and fast retransmit cannot cover a request/response exchange; INITIAL_MTU 1228 also fragments on # IPv6. The fork commit carries the arithmetic. # Pinned by rev, not branch: a fork branch can be rewritten out from under the lockfile. -webrtc-util = { git = "https://github.com/rustdesk-org/webrtc", rev = "56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833" } -webrtc-sctp = { git = "https://github.com/rustdesk-org/webrtc", rev = "56d097c54f9ea1e48c0dfbeb6ce7e66d2e66e833" } +webrtc-util = { git = "https://github.com/rustdesk-org/webrtc", rev = "0a84ba37fbca940b82f230fb469d1b3a3172abf6" } +webrtc-sctp = { git = "https://github.com/rustdesk-org/webrtc", rev = "0a84ba37fbca940b82f230fb469d1b3a3172abf6" } [package.metadata.winres] LegalCopyright = "Copyright © 2026 Purslane Tech Pte. Ltd. All rights reserved."