Adds support for a core attended transfer function plus adds some hiding of masquerades.

The attended transfer API call can complete the attended transfer in a number of ways
depending on the current bridged states of the channels involved.

The hiding of masquerades is done in some bridging-related functions, such as the manager
Bridge action and the Bridge dialplan application. In addition, call pickup was edited
to "move" a channel rather than masquerade it.

Review: https://reviewboard.asterisk.org/r/2511

(closes issue ASTERISK-21334)
Reported by Matt Jordan

(closes issue Asterisk-21336)
Reported by Matt Jordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389848 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2013-05-28 14:45:31 +00:00
parent 2d2a47fae3
commit fac3839e68
11 changed files with 1015 additions and 449 deletions

View File

@@ -3236,7 +3236,7 @@ static int attempt_transfer(struct mgcp_endpoint *p, struct mgcp_subchannel *sub
ast_mutex_unlock(&p->sub->next->lock);
ast_mutex_unlock(&p->sub->lock);
res = ast_bridge_transfer_attended(sub->owner, sub->next->owner, NULL);
res = ast_bridge_transfer_attended(sub->owner, sub->next->owner);
/* Subs are only freed when the endpoint itself is destroyed, so they will continue to exist
* after ast_bridge_transfer_attended returns making this safe without reference counting

View File

@@ -26234,9 +26234,11 @@ struct blind_transfer_cb_data {
* we may send out.
*
* \param chan The new outbound channel
* \user_data A blind_transfer_cb_data struct
* \param user_data A blind_transfer_cb_data struct
* \param transfer_type Unused
*/
static void blind_transfer_cb(struct ast_channel *chan, void *user_data)
static void blind_transfer_cb(struct ast_channel *chan, void *user_data,
enum ast_transfer_type transfer_type)
{
struct blind_transfer_cb_data *cb_data = user_data;