You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(memleak): release call-lifecycle resources + bump rustrtc to 0.3.86
Fixes several memory leaks that accumulated across calls:
- policy: track acquired concurrency slots in PolicyCheckOutcome and release
them in SipSession::cleanup()/Drop (release_concurrency was never called,
permanently exhausting max_total after N calls). Abort path releases
immediately; success path threads holds via DialplanHints/Application.
- bridge: N-peer forwarder task now honors a child cancel token (select!) so it
stops when the bridge tears down instead of pinning the peers map + extra
PeerConnections forever. prune_sub_tasks caps live sub-tasks (renegotiation
churn) and replaces racy try_lock drops with awaited lock + push.
- mixer: MediaMixer gains a Drop that cancels + aborts its 1Hz task;
MixerRegistry auto-removes mixers once participant count hits 0 so orphaned
supervisor mixers (hang-up without supervisor_stop) no longer leak.
- conference_mixer: prune route_gains referencing a leaving leg; guard
participant_count against underflow on duplicate remove.
- engine: store SipFlow capture JoinHandle on MediaSession; stop/restart/
DestroySession abort it (previously 'stop' was a no-op logging only).
- controller: set_timeout/cancel_timeout now track JoinHandles in a map and
abort on cancel/re-register/Drop so pending timers don't outlive the call.
- Bump rustrtc to 0.3.86 (SRTP SSRC-context eviction, SCTP flow-control hang,
notify_one race fix, MediaRelay task exit, PeerConnection task registry).
0 commit comments