feat: WebRTC data-plane framing, DTLS binding, and pc-leak fixes

- 1-byte-header fragmentation past the 64KB SCTP cap; empty-message and clean-EOF handling
- is_relayed() via selected candidate-pair stats for the direct/relayed flag
- IdPk.dtls_fingerprint + rendezvous webrtc SDP/IceCandidate proto fields
- fix pc leaks: Weak capture breaks the state-handler Arc self-cycle; close pc on new() error paths

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
rustdesk
2026-09-04 23:33:31 +08:00
co-authored by Claude Opus 4.8
parent 1ee667e78b
commit e9cdb2fe5d
5 changed files with 515 additions and 81 deletions
+4
View File
@@ -38,6 +38,10 @@ message VideoFrame {
message IdPk {
string id = 1;
bytes pk = 2;
// DTLS certificate fingerprint of the signer's WebRTC endpoint, signed together with id/pk so
// a WebRTC peer's DTLS channel can be bound to its verified identity (defeats a rendezvous/relay
// that swaps SDP fingerprints). Empty for non-WebRTC handshakes.
string dtls_fingerprint = 3;
}
message DisplayInfo {