From: Matt Jordan Date: Fri, 4 Nov 2016 20:37:57 +0000 (-0500) Subject: main/bridge_channel: Fix channel reference leak on video source X-Git-Tag: 13.13.0-rc1~43^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7dc536b7ae11abf0414b367d1125610dd858188;p=thirdparty%2Fasterisk.git main/bridge_channel: Fix channel reference leak on video source 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 --- diff --git a/main/bridge_channel.c b/main/bridge_channel.c index 2fafdf9903..652d40ca46 100644 --- a/main/bridge_channel.c +++ b/main/bridge_channel.c @@ -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. */