summaryrefslogtreecommitdiff
path: root/include/asterisk/bridge.h
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2014-05-22 15:52:30 +0000
committerJonathan Rose <jrose@digium.com>2014-05-22 15:52:30 +0000
commitd00882108fabd3798aa6566aa5697d82459e753e (patch)
tree0cb38a4b41e85b73f89486b8492a0fc3078e3ba9 /include/asterisk/bridge.h
parent912bbdd1ddf98b4e6d99b3cb258f103c09ee132f (diff)
res_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers
PJSIP would never send the final 200 Notify for a blind transfer when transferring to parking. This patch fixes that. In addition, it fixes a reference leak when performing blind transfers to non-bridging extensions. Review: https://reviewboard.asterisk.org/r/3485/ ........ Merged revisions 414400 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/bridge.h')
-rw-r--r--include/asterisk/bridge.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/include/asterisk/bridge.h b/include/asterisk/bridge.h
index 8768fe1be..d23d4b5bc 100644
--- a/include/asterisk/bridge.h
+++ b/include/asterisk/bridge.h
@@ -904,6 +904,22 @@ enum ast_transfer_type {
};
/*!
+ * \brief AO2 object that wraps data for transfer_channel_cb
+ */
+struct transfer_channel_data {
+ void *data; /*! Data to be used by the transfer_channel_cb -- note that this
+ * pointer is going to be pointing to something on the stack, so
+ * it must not be used at any point after returning from the
+ * transfer_channel_cb. */
+ int completed; /*! Initially 0, This will be set to 1 by either the transfer
+ * code or by transfer code hooks (e.g. parking) when the
+ * transfer is completed and any remaining actions have taken
+ * place (e.g. parking announcements). It will never be reset
+ * to 0. This is used for deferring progress for channel
+ * drivers that support deferred progress. */
+};
+
+/*!
* \brief Callback function type called during blind transfers
*
* A caller of ast_bridge_transfer_blind() may wish to set data on
@@ -914,7 +930,7 @@ enum ast_transfer_type {
* \param user_data User-provided data needed in the callback
* \param transfer_type The type of transfer being completed
*/
-typedef void (*transfer_channel_cb)(struct ast_channel *chan, void *user_data,
+typedef void (*transfer_channel_cb)(struct ast_channel *chan, struct transfer_channel_data *user_data,
enum ast_transfer_type transfer_type);
/*!