mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-24 06:53:41 +00:00
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/branches/1.4@89281 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -11854,16 +11854,29 @@ 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)) {
|
||||||
if (option_debug)
|
/* if we can't REINVITE, hold it for later */
|
||||||
ast_log(LOG_DEBUG, "Sending pending reinvite on '%s'\n", p->callid);
|
if (p->pendinginvite || p->invitestate == INV_CALLING || p->invitestate == INV_PROCEEDING || p->invitestate == INV_EARLY_MEDIA) {
|
||||||
/* Didn't get to reinvite yet, so do it now */
|
if (option_debug)
|
||||||
transmit_reinvite_with_sdp(p);
|
ast_log(LOG_DEBUG, "NOT Sending pending reinvite (yet) on '%s'\n", p->callid);
|
||||||
ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE);
|
} else {
|
||||||
|
if (option_debug)
|
||||||
|
ast_log(LOG_DEBUG, "Sending pending reinvite on '%s'\n", p->callid);
|
||||||
|
/* Didn't get to reinvite yet, so do it now */
|
||||||
|
transmit_reinvite_with_sdp(p);
|
||||||
|
ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user