diff options
author | Matthew Jordan <mjordan@digium.com> | 2014-06-08 18:12:53 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2014-06-08 18:12:53 +0000 |
commit | 20a14e568f64de25326d794768790351cb703330 (patch) | |
tree | 045cdcd6e32ce2c69d1a71f317864519a78e6349 /include/asterisk/channel.h | |
parent | 30b7ba05e737054e0119c4d0c2bb5498ab645705 (diff) |
bridges/bridge_native_rtp: Reconfigure bridge on removal of framehook
This patch is a re-do of r414122.
When r414122 was merged, a major problem with it was uncovered. UNBRIDGE soft
hangup flags have a catastrophic effect on the pbx core if they leak out from
the bridge layer: the channel gets hung up. With the number of threads
involved in a blind transfer, and with the initial patch, it was likely that
this would occur. This caused a large number of test failures
This patch is nearly identical with the one proposed in r414122, save for the
following changes:
- We explicitly clear the UNBRIDGE flag when setting an after goto on a
channel in a bridge
- Defensively, if we encounter an UNBRIDGE flag in the pbx core, we handle it
https://reviewboard.asterisk.org/r/3585/
........
Merged revisions 415443 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@415444 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/channel.h')
-rw-r--r-- | include/asterisk/channel.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index a4ad2ae01..3575bae8f 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -4273,6 +4273,22 @@ struct ast_bridge *ast_channel_get_bridge(const struct ast_channel *chan); int ast_channel_is_bridged(const struct ast_channel *chan); /*! + * \brief Determine if a channel is leaving a bridge, but \em not hung up + * \since 12.4.0 + * + * \param chan The channel to test + * + * \note If a channel is hung up, it is implicitly leaving any bridge it + * may be in. This function is used to test if a channel is leaving a bridge + * but may survive the experience, if it has a place to go to (dialplan or + * otherwise) + * + * \retval 0 The channel is not leaving the bridge or is hung up + * \retval non-zero The channel is leaving the bridge + */ +int ast_channel_is_leaving_bridge(struct ast_channel *chan); + +/*! * \brief Get the channel's bridge peer only if the bridge is two-party. * \since 12.0.0 * |