diff options
author | Richard Mudgett <rmudgett@digium.com> | 2013-08-16 20:48:13 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2013-08-16 20:48:13 +0000 |
commit | 35b9c6a660236e23e6b9102cc641ab11e967a25a (patch) | |
tree | aa2856e4d3e9b1352296d4bfdff2af8a005e4835 /include/asterisk/bridge_channel.h | |
parent | 6399836f9b14ce180d2c15985cf59b23fdceb07b (diff) |
Fix CLI "bridge kick <bridge> <channel>" to check if the bridge needs dissolving.
SIP/foo -- Local;1==Local;2 -- .... -- Local;1==Local;2 -- SIP/bar
Kick a ;1 channel and the chain toward SIP/foo goes away.
Kick a ;2 channel and the chain toward SIP/bar goes away.
This can leave a local channel chain between the kicked ;1 and ;2 channels
that are orphaned until you manually request one of those channels to
hangup or request the bridge to dissolve.
* Added ast_bridge_kick() as a companion to ast_bridge_remove(). The
functional difference is that ast_bridge_kick() may dissolve the bridge as
a result of the channel leaving the bridge.
* Made CLI "bridge kick <bridge> <channel>" use ast_bridge_kick() instead
of ast_bridge_remove() so the bridge can dissolve if needed.
* Renamed bridge_channel_handle_hangup() to ast_bridge_channel_kick() and
made it accessible to other files.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396877 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/bridge_channel.h')
-rw-r--r-- | include/asterisk/bridge_channel.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asterisk/bridge_channel.h b/include/asterisk/bridge_channel.h index 32ef66248..39526611a 100644 --- a/include/asterisk/bridge_channel.h +++ b/include/asterisk/bridge_channel.h @@ -583,6 +583,19 @@ int ast_bridge_channel_queue_callback(struct ast_bridge_channel *bridge_channel, int ast_bridge_channel_write_park(struct ast_bridge_channel *bridge_channel, const char *parkee_uuid, const char *parker_uuid, const char *app_data); +/*! + * \brief Kick the channel out of the bridge. + * \since 12.0.0 + * + * \param bridge_channel Which channel is being kicked or hungup. + * + * \note This is intended to be called by bridge hooks and the + * bridge channel thread. + * + * \return Nothing + */ +void ast_bridge_channel_kick(struct ast_bridge_channel *bridge_channel); + #if defined(__cplusplus) || defined(c_plusplus) } #endif |