Bug: poll_rtc 始终返回 Ok(false),断连后资源永久泄漏 (webrtc.rs) #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
位置
src/webrtc.rs:339-377严重性
🔴 高
问题描述
WebRtcInner::poll_rtc在所有路径上都返回Ok(false),包括检测到IceConnectionState::Disconnected时也只设置self.connected = false而未返回true。WebRtcState::poll_rtc依赖inner.poll_rtc()?返回true来触发self.inner = None的清理逻辑。由于始终返回false,断连后 UDP socket、Rtc 实例及 65KB 缓冲区持续占用资源,直至新 SDP offer 到达时被替换。若客户端不再重连,这些资源将永久泄漏。建议修复
在
Disconnected和Failed事件分支中返回Ok(true),通知上层销毁inner:修复信息
提交:
fc4733f改动: src/webrtc.rs L360 — 在 IceConnectionState::Disconnected 分支添加 return Ok(true);
原理: WebRtcInner::poll_rtc() 始终返回 Ok(false),导致上层 WebRtcState::poll_rtc() 永远不触发 self.inner = None 的清理逻辑。断连后 UDP socket、Rtc 实例及 65KB 缓冲区持续占用,若客户端不再重连则永久泄漏。
审核备注: