summaryrefslogtreecommitdiff
path: root/include/asterisk/bridge_features.h
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-07-26 21:34:23 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-07-26 21:34:23 +0000
commitc017d5e6a34fa7e8dc7ba089b5db2338f117c81b (patch)
treed111b5985f3985ab02a462d4b48467b537163b70 /include/asterisk/bridge_features.h
parent50aba6be3654e348960a3bda2312f7a913f5c160 (diff)
Remove the unsafe bridge parameter from ast_bridge_hook_callback's.
Most hook callbacks did not need the bridge parameter. The pointer value could become invalid if the channel is moved to another bridge while it is executing. * Fixed some issues in feature_attended_transfer() as a result. * Reduce the bridge inhibit count in attended_transfer_properties_shutdown() after it has restored the bridge channel hooks. * Removed basic bridge requirement on feature_blind_transfer(). It does not require the basic bridge like feature_attended_transfer(). git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/bridge_features.h')
-rw-r--r--include/asterisk/bridge_features.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/include/asterisk/bridge_features.h b/include/asterisk/bridge_features.h
index 3a4fd9444..0a3a21ede 100644
--- a/include/asterisk/bridge_features.h
+++ b/include/asterisk/bridge_features.h
@@ -118,7 +118,6 @@ struct ast_bridge_channel;
/*!
* \brief Hook callback type
*
- * \param bridge The bridge that the channel is part of
* \param bridge_channel Channel executing the feature
* \param hook_pvt Private data passed in when the hook was created
*
@@ -131,7 +130,7 @@ struct ast_bridge_channel;
* \retval 0 Keep the callback hook.
* \retval -1 Remove the callback hook.
*/
-typedef int (*ast_bridge_hook_callback)(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt);
+typedef int (*ast_bridge_hook_callback)(struct ast_bridge_channel *bridge_channel, void *hook_pvt);
/*!
* \brief Hook pvt destructor callback
@@ -143,17 +142,19 @@ typedef void (*ast_bridge_hook_pvt_destructor)(void *hook_pvt);
/*!
* \brief Talking indicator callback
*
- * \details This callback can be registered with the bridge in order
- * to receive updates on when a bridge_channel has started and stopped
- * talking
+ * \details
+ * This callback can be registered with the bridge channel in
+ * order to receive updates when the bridge_channel has started
+ * and stopped talking.
*
* \param bridge_channel Channel executing the feature
+ * \param hook_pvt Private data passed in when the hook was created
* \param talking TRUE if the channel is now talking
*
* \retval 0 Keep the callback hook.
* \retval -1 Remove the callback hook.
*/
-typedef int (*ast_bridge_talking_indicate_callback)(struct ast_bridge_channel *bridge_channel, void *pvt_data, int talking);
+typedef int (*ast_bridge_talking_indicate_callback)(struct ast_bridge_channel *bridge_channel, void *hook_pvt, int talking);
enum ast_bridge_hook_remove_flags {
/*! The hook is removed when the channel is pulled from the bridge. */
@@ -357,6 +358,8 @@ int ast_bridge_features_unregister(enum ast_bridge_builtin_feature feature);
* \brief Invoke a built in feature hook now.
*
* \param feature The feature to invoke
+ * \param bridge_channel Channel executing the feature
+ * \param hook_pvt Private data passed in when the hook was created
*
* \note This API call is only meant to be used by bridge
* subclasses and hook callbacks to request a builtin feature
@@ -368,10 +371,10 @@ int ast_bridge_features_unregister(enum ast_bridge_builtin_feature feature);
* Example usage:
*
* \code
- * ast_bridge_features_do(AST_BRIDGE_BUILTIN_ATTENDED_TRANSFER, bridge, bridge_channel, hook_pvt);
+ * ast_bridge_features_do(AST_BRIDGE_BUILTIN_ATTENDED_TRANSFER, bridge_channel, hook_pvt);
* \endcode
*/
-int ast_bridge_features_do(enum ast_bridge_builtin_feature feature, struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, void *hook_pvt);
+int ast_bridge_features_do(enum ast_bridge_builtin_feature feature, struct ast_bridge_channel *bridge_channel, void *hook_pvt);
/*!
* \brief Attach interval hooks to a bridge features structure