mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-29 02:57:23 +00:00
Fix incorrect calls to ast_bridge_impart().
There was a misunderstanding about ast_bridge_impart()'s handling of the imparted channel's reference. The channel reference is passed by the caller unless ast_bridge_impart() returns an error. * Fixed a memory leak in conf_announce_channel_push() if the impart failed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392934 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -24777,8 +24777,8 @@ static int handle_request_options(struct sip_pvt *p, struct sip_request *req, st
|
||||
static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req,
|
||||
int *nounlock, struct sip_pvt *replaces_pvt, struct ast_channel *replaces_chan)
|
||||
{
|
||||
struct ast_channel *c;
|
||||
RAII_VAR(struct ast_bridge *, bridge, NULL, ao2_cleanup);
|
||||
RAII_VAR(struct ast_channel *, c, NULL, ao2_cleanup);
|
||||
|
||||
if (req->ignore) {
|
||||
return 0;
|
||||
@@ -24813,7 +24813,9 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req,
|
||||
ast_channel_unlock(replaces_chan);
|
||||
|
||||
if (bridge) {
|
||||
ast_bridge_impart(bridge, c, replaces_chan, NULL, 1);
|
||||
if (ast_bridge_impart(bridge, c, replaces_chan, NULL, 1)) {
|
||||
ast_hangup(c);
|
||||
}
|
||||
} else {
|
||||
ast_channel_move(replaces_chan, c);
|
||||
ast_hangup(c);
|
||||
|
Reference in New Issue
Block a user