diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-11-09 16:55:32 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-11-09 16:55:32 +0000 |
commit | 89fdc4f316990d60c22d21f8fd5885a49d710c57 (patch) | |
tree | 85627bda8a8f48ade72ef64c8f71c74618258edc /include | |
parent | 3f17f7ce08f9b3783e09ec2e23779f55803ffc4a (diff) |
Analog lines do not transfer CONNECTED LINE or execute the interception macros.
Add connected line update for sig_analog transfers and simplify the
corresponding sig_pri and chan_misdn transfer code.
Note that if you create a three-way call in sig_analog before transferring
the call, the distinction of the caller/callee interception macros make
little sense. The interception macro writer needs to be prepared for
either caller/callee macro to be executed. The current implementation
swaps which caller/callee interception macro is executed after a three-way
call is created.
Review: https://reviewboard.asterisk.org/r/996/
JIRA ABE-2589
JIRA SWP-2372
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@294349 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/channel.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index d12d478d3..172f69b03 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -1875,6 +1875,52 @@ int ast_channel_bridge(struct ast_channel *c0,struct ast_channel *c1, int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clone); /*! + * \brief Setup a masquerade to transfer a call. + * \since 1.8 + * + * \param target_chan Target of the call transfer. (Masquerade original channel) + * \param target_id New connected line information for the target channel. + * \param target_held TRUE if the target call is on hold. + * \param transferee_chan Transferee of the call transfer. (Masquerade clone channel) + * \param transferee_id New connected line information for the transferee channel. + * \param transferee_held TRUE if the transferee call is on hold. + * + * \details + * Party A - Transferee + * Party B - Transferer + * Party C - Target of transfer + * + * Party B transfers A to C. + * + * Party A is connected to bridged channel B1. + * Party B is connected to channels C1 and C2. + * Party C is connected to bridged channel B2. + * + * Party B -- C1 == B1 -- Party A + * __/ + * / + * Party B -- C2 == B2 -- Party C + * + * Bridged channel B1 is masqueraded into channel C2. Where B1 + * is the masquerade clone channel and C2 is the masquerade + * original channel. + * + * \see ast_channel_masquerade() + * + * \note Has the same locking requirements as ast_channel_masquerade(). + * + * \retval 0 on success. + * \retval -1 on error. + */ +int ast_channel_transfer_masquerade( + struct ast_channel *target_chan, + const struct ast_party_connected_line *target_id, + int target_held, + struct ast_channel *transferee_chan, + const struct ast_party_connected_line *transferee_id, + int transferee_held); + +/*! * \brief Gives the string form of a given cause code. * * \param state cause to get the description of |