mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
chan_sip: Fix early call pickup channel leak.
When handle_invite_replaces() was called, and either ast_bridge_impart() failed or there was no bridge (because the channel we're picking up was still ringing), chan_sip would leak a channel. Thanks Matt and Corey for checking the bridge path. ASTERISK-25226 #close Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8
This commit is contained in:
@@ -24926,10 +24926,12 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req,
|
||||
if (ast_bridge_impart(bridge, c, replaces_chan, NULL,
|
||||
AST_BRIDGE_IMPART_CHAN_INDEPENDENT)) {
|
||||
ast_hangup(c);
|
||||
ast_channel_unref(c);
|
||||
}
|
||||
} else {
|
||||
ast_channel_move(replaces_chan, c);
|
||||
ast_hangup(c);
|
||||
ast_channel_unref(c);
|
||||
}
|
||||
sip_pvt_lock(p);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user