]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
main/bridge_channel: Fix channel reference leak on video source 11/4311/1
authorMatt Jordan <mjordan@digium.com>
Fri, 4 Nov 2016 20:37:57 +0000 (15:37 -0500)
committerMatt Jordan <mjordan@digium.com>
Fri, 4 Nov 2016 20:49:18 +0000 (15:49 -0500)
When a channel is made the video source, the bridge holds a reference to
it. Whenever the video source changes, that reference is released.
However, a ref leak does occur if the channel leaves the bridge (such as
being hung up) while it is the video source, as the bridge never
releases the ref in such a case.

This patch adds a line to the bridge_channel_internal_join routine such
that, when a channel finishes its time in the bridge, it notifies the
bridge via ast_bridge_remove_video_src that if it is a video source its
reference should be released.

ASTERISK-26555 #close

Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a

main/bridge_channel.c

index 2fafdf9903275bf130afb32044fb9e21a215cef1..652d40ca468fc19d0a262396279ab7a4dc7f5765 100644 (file)
@@ -2743,6 +2743,9 @@ int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel)
        bridge_channel_settle_owed_events(bridge_channel->bridge, bridge_channel);
        bridge_reconfigured(bridge_channel->bridge, 1);
 
+       /* Remove ourselves if we are the video source */
+       ast_bridge_remove_video_src(bridge_channel->bridge, bridge_channel->chan);
+
        ast_bridge_unlock(bridge_channel->bridge);
 
        /* Must release any swap ref after unlocking the bridge. */