From 00005f6af546755822c0c7b1871b6f490ba1e65f Mon Sep 17 00:00:00 2001 From: rustdesk Date: Tue, 25 Aug 2026 14:00:21 +0800 Subject: [PATCH] bump hbb_common: drop link-local IPv6 from ICE gathering Also pin webrtc-util to a fork of 0.11.0 carrying a Windows IPv6 enumeration fix. `ifaces` reads the adapter list's on-wire IPv6 bytes as host-order `[u16; 8]`, so on a little-endian host every group comes out byte-swapped and unbindable: a peer's real 240e:369:9606:4600:f52a:7a8d:2530:4de0 is enumerated as e24:6903:696:46:2af5:8d7a:3025:e04d, ::1 as ::100 and fe80:: as 80fe::. Each fails to bind with WSAEADDRNOTAVAIL, so ICE gathers no IPv6 host candidate at all on Windows - where a globally routable address is the one NAT-free path a CGNAT'd peer has. Never reported upstream; the unix twin of the same bug was fixed in webrtc-rs#475 (2023). Fork: rustdesk-org/webrtc, branch rustdesk-patches, tag webrtc-util-0.11.0-win-ipv6. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019UzcMTdYTEv2QbMHcTSUy3 --- Cargo.lock | 3 +-- Cargo.toml | 4 ++++ libs/hbb_common | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6fe856b56..45aeeaf5c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9747,8 +9747,7 @@ dependencies = [ [[package]] name = "webrtc-util" version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64bfb10dbe6d762f80169ae07cf252bafa1f764b9594d140008a0231c0cdce58" +source = "git+https://github.com/rustdesk-org/webrtc?rev=ac9e74ec2dc502d9afce8d5fc3c9644f2139aee7#ac9e74ec2dc502d9afce8d5fc3c9644f2139aee7" dependencies = [ "async-trait", "bitflags 1.3.2", diff --git a/Cargo.toml b/Cargo.toml index 5f4529165..dca4e6b9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -215,6 +215,10 @@ exclude = ["vdi/host"] # This allows building and running on systems without libxdo installed (e.g., Wayland-only) [patch.crates-io] libxdo-sys = { path = "libs/libxdo-sys-stub" } +# webrtc-util reads the Windows adapter list's IPv6 addresses as host-order u16 groups, so every +# one comes out byte-swapped, fails to bind, and ICE gathers no IPv6 host candidate on Windows. +# 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 = "ac9e74ec2dc502d9afce8d5fc3c9644f2139aee7" } [package.metadata.winres] LegalCopyright = "Copyright © 2026 Purslane Tech Pte. Ltd. All rights reserved." diff --git a/libs/hbb_common b/libs/hbb_common index 6b8182ed3..7ea29baac 160000 --- a/libs/hbb_common +++ b/libs/hbb_common @@ -1 +1 @@ -Subproject commit 6b8182ed38b4c9d800ae4e168137000c3545536f +Subproject commit 7ea29baacf0b013ee1f76bb8c7c9b5ff35958c3c