mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge
There is a problem when an INVITE-with-Replaces transfer targets a channel in a ConfBridge. The transfer will unconditionally swap out the ConfBridge channel. Unfortunately, the ConfBridge state will not be aware of this change. Unexpected behavior will happen as a result since ConfBridge channels currently can only be replaced by a masquerade and not normal bridge channel moves. * We just need to pretend that the channel isn't in a bridge (like other transfer methods already do) so the transfer channel will masquerade into the ConfBridge channel. Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82
This commit is contained in:
@@ -25670,10 +25670,7 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req,
|
||||
|
||||
ast_raw_answer(c);
|
||||
|
||||
ast_channel_lock(replaces_chan);
|
||||
bridge = ast_channel_get_bridge(replaces_chan);
|
||||
ast_channel_unlock(replaces_chan);
|
||||
|
||||
bridge = ast_bridge_transfer_acquire_bridge(replaces_chan);
|
||||
if (bridge) {
|
||||
if (ast_bridge_impart(bridge, c, replaces_chan, NULL,
|
||||
AST_BRIDGE_IMPART_CHAN_INDEPENDENT)) {
|
||||
|
Reference in New Issue
Block a user