From: Matthew Nicholson Date: Thu, 30 Sep 2010 19:51:27 +0000 (+0000) Subject: Properly handle channel allocation failures duing invites with replaces. X-Git-Tag: 1.6.2.15-rc1~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d7822bfaf896d6c1a3c73a54b3fa5e3b9bc0e8c;p=thirdparty%2Fasterisk.git Properly handle channel allocation failures duing invites with replaces. ABE-2588 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@289553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 5f523f0a88..eedac8f048 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -20252,7 +20252,8 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int /* Initialize our tag */ make_our_tag(p->tag, sizeof(p->tag)); - /* First invitation - create the channel */ + /* First invitation - create the channel. Allocation + * failures are handled below. */ c = sip_new(p, AST_STATE_DOWN, S_OR(p->peername, NULL)); *recount = 1; @@ -20412,7 +20413,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int if (!req->ignore && p) p->lastinvite = seqno; - if (replace_id) { /* Attended transfer or call pickup - we're the target */ + if (c && replace_id) { /* Attended transfer or call pickup - we're the target */ if (!ast_strlen_zero(pickup.exten)) { append_history(p, "Xfer", "INVITE/Replace received");