summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2013-10-03 20:22:17 +0000
committerMark Michelson <mmichelson@digium.com>2013-10-03 20:22:17 +0000
commitb11983d4809327c483bfce23efca53bc0fb42c89 (patch)
tree80d91fbc80d89af9dbcd28ffaa37ba1381a8ab14 /include
parent98269238055e97579225fc13a4f81e7f17085313 (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.h4
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);
/*!