Skip to content
Snippets Groups Projects
Commit a4ce44bd authored by Olle Johansson's avatar Olle Johansson
Browse files

Merged revisions 89281 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89281 | oej | 2007-11-15 12:26:22 +0100 (Tor, 15 Nov 2007) | 6 lines

Don't send re-invites during pending INVITE transactions.

Patch by one47 - thanks!

Closes issue #9305

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89283 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent c698e392
Branches
Tags
No related merge requests found
...@@ -13192,15 +13192,27 @@ static void check_pendings(struct sip_pvt *p) ...@@ -13192,15 +13192,27 @@ static void check_pendings(struct sip_pvt *p)
transmit_request(p, SIP_CANCEL, p->ocseq, XMIT_RELIABLE, FALSE); transmit_request(p, SIP_CANCEL, p->ocseq, XMIT_RELIABLE, FALSE);
/* Actually don't destroy us yet, wait for the 487 on our original /* Actually don't destroy us yet, wait for the 487 on our original
INVITE, but do set an autodestruct just in case we never get it. */ INVITE, but do set an autodestruct just in case we never get it. */
else else {
/* We have a pending outbound invite, don't send someting
new in-transaction */
if (p->pendinginvite)
return;
/* Perhaps there is an SD change INVITE outstanding */
transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, TRUE); transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, TRUE);
}
ast_clear_flag(&p->flags[0], SIP_PENDINGBYE); ast_clear_flag(&p->flags[0], SIP_PENDINGBYE);
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
} else if (ast_test_flag(&p->flags[0], SIP_NEEDREINVITE)) { } else if (ast_test_flag(&p->flags[0], SIP_NEEDREINVITE)) {
ast_debug(2, "Sending pending reinvite on '%s'\n", p->callid); /* if we can't REINVITE, hold it for later */
/* Didn't get to reinvite yet, so do it now */ if (p->pendinginvite || p->invitestate == INV_CALLING || p->invitestate == INV_PROCEEDING || p->invitestate == INV_EARLY_MEDIA) {
transmit_reinvite_with_sdp(p, FALSE); ast_debug(2, "NOT Sending pending reinvite (yet) on '%s'\n", p->callid);
ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE); } else {
ast_debug(2, "Sending pending reinvite on '%s'\n", p->callid);
/* Didn't get to reinvite yet, so do it now */
transmit_reinvite_with_sdp(p, FALSE);
ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE);
}
} }
} }
   
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment