mirror of
https://github.com/rustdesk/hbb_common.git
synced 2026-10-11 19:23:59 +00:00
4867575f65ee98e7f70169a06ca2cfe10d0f8330
The local-candidate channel's only sender lived in the on_ice_candidate handler until the pc reached a terminal state, so the forwarder loop a caller writes on take_local_ice_rx sat parked on recv() for the whole session. On the controlled side that loop holds its dedicated signaling connection to hbbs, which hbbs closes after 90s idle, leaving a task and a CLOSE_WAIT socket per session until the session ended. Gathering complete is the agent's last word short of an ICE restart, which nothing here does, so drop the sender there; the terminal-state handler's swap stays for a pc that dies before it gets that far. Reassembly handed the accumulated message over with mem::take, which left the accumulator with no capacity and had every fragmented frame regrow it from nothing, reallocating and recopying as it went. split() hands over the same bytes and keeps the allocation, which reserve() reclaims once the caller has dropped the message. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019aokqJuhjvB3kijXtAg5Ns
Description
No description provided
74 MiB
Languages
Rust
100%