diff options
author | Mark Michelson <mmichelson@digium.com> | 2013-10-03 20:22:17 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2013-10-03 20:22:17 +0000 |
commit | b11983d4809327c483bfce23efca53bc0fb42c89 (patch) | |
tree | 80d91fbc80d89af9dbcd28ffaa37ba1381a8ab14 /include | |
parent | 98269238055e97579225fc13a4f81e7f17085313 (diff) |
Fix assumption in bridge_native_rtp.c regarding number of participants in a bridge.
When a party leaves a bridge, there may be more participants in the bridge than expected.
As such, it is important not to make assumptions regarding the list of channels in a
bridge.
This change makes it so that when a party leaves a native RTP bridge, we unbridge it and
the party it was bridged with. Previously, the first and last channels in the list were
unbridged since it was assumed that these were the two channels that had been bridged. As
previously stated, a new party had been inserted into the bridge, so this logic did not
work properly.
(closes issue ASTERISK-22615)
reported by Matt Jordan
Review: https://reviewboard.asterisk.org/r/2899
........
Merged revisions 400403 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400452 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/bridge_technology.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/asterisk/bridge_technology.h b/include/asterisk/bridge_technology.h index 534eb5417..9c39f74c2 100644 --- a/include/asterisk/bridge_technology.h +++ b/include/asterisk/bridge_technology.h @@ -113,6 +113,10 @@ struct ast_bridge_technology { * \brief Remove a channel from a bridging technology instance for a bridge. * * \note On entry, bridge is already locked. + * \note Do not make assumptions about the number of channels in the bridge when + * this callback is called. When a channel is swapped into a bridge for another + * channel, the leave callback is called after the new channel has been added to + * the bridge. */ void (*leave)(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel); /*! |