- CANCEL is never authenticated (according to the RFC)

- Update docs on canreinvite. "nonat" is the recommended setting for most users with
  phones behind a NAT.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47733 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Olle Johansson 19 years ago
parent e83e3123f7
commit 5bd53e3588

@ -3304,7 +3304,7 @@ static int sip_hangup(struct ast_channel *ast)
/* Do we need a timer here if we don't hear from them at all? */ /* Do we need a timer here if we don't hear from them at all? */
} else { } else {
/* Send a new request: CANCEL */ /* Send a new request: CANCEL */
transmit_request_with_auth(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. */
needdestroy = 0; needdestroy = 0;
@ -11444,11 +11444,11 @@ static void check_pendings(struct sip_pvt *p)
if (ast_test_flag(&p->flags[0], SIP_PENDINGBYE)) { if (ast_test_flag(&p->flags[0], SIP_PENDINGBYE)) {
/* if we can't BYE, then this is really a pending CANCEL */ /* if we can't BYE, then this is really a pending CANCEL */
if (!ast_test_flag(&p->flags[0], SIP_CAN_BYE)) if (!ast_test_flag(&p->flags[0], SIP_CAN_BYE))
transmit_request_with_auth(p, SIP_CANCEL, p->ocseq, 1, 0); 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
transmit_request_with_auth(p, SIP_BYE, 0, 1, 1); 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)) {

@ -248,6 +248,12 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; route = Assume NAT, don't send rport ; route = Assume NAT, don't send rport
; (work around more UNIDEN bugs) ; (work around more UNIDEN bugs)
;----------------------------------- MEDIA HANDLING --------------------------------
; By default, Asterisk tries to re-invite the audio to an optimal path. If there's
; no reason for Asterisk to stay in the media path, the media will be redirected.
; This does not really work with in the case where Asterisk is outside and have
; clients on the inside of a NAT. In that case, you want to set canreinvite=nonat
;
;canreinvite=yes ; Asterisk by default tries to redirect the ;canreinvite=yes ; Asterisk by default tries to redirect the
; RTP media stream (audio) to go directly from ; RTP media stream (audio) to go directly from
; the caller to the callee. Some devices do not ; the caller to the callee. Some devices do not

Loading…
Cancel
Save