mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-18 18:58:22 +00:00
Fix SIP ACK for BYE (bug #3087)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@4500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3100,6 +3100,7 @@ static int respprep(struct sip_request *resp, struct sip_pvt *p, char *msg, stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*--- reqprep: Initialize a SIP request packet ---*/
|
||||
static int reqprep(struct sip_request *req, struct sip_pvt *p, char *msg, int seqno, int newbranch)
|
||||
{
|
||||
struct sip_request *orig = &p->initreq;
|
||||
@@ -3135,9 +3136,12 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, char *msg, int se
|
||||
c = p->okcontacturi;
|
||||
else
|
||||
c = p->initreq.rlPart2;
|
||||
} else if (!ast_strlen_zero(p->okcontacturi)) {
|
||||
c = p->okcontacturi; /* Use for BYE or REINVITE */
|
||||
} else if (!ast_strlen_zero(p->uri)) {
|
||||
c = p->uri;
|
||||
} else {
|
||||
/* We have no URI, use To: or From: header as URI (depending on direction) */
|
||||
if (p->outgoing)
|
||||
strncpy(stripped, get_header(orig, "To"), sizeof(stripped) - 1);
|
||||
else
|
||||
@@ -3569,7 +3573,7 @@ static int determine_firstline_parts( struct sip_request *req ) {
|
||||
e++;
|
||||
if( !*e ) { return -1; }
|
||||
}
|
||||
req->rlPart2= e;
|
||||
req->rlPart2= e; /* URI */
|
||||
if( ( e= strrchr( req->rlPart2, 'S' ) ) == NULL ) {
|
||||
return -1;
|
||||
}
|
||||
@@ -3583,9 +3587,12 @@ static int determine_firstline_parts( struct sip_request *req ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* transmit_reinvite_with_sdp: Transmit reinvite with SDP :-) ---*/
|
||||
/* A re-invite is basically a new INVITE with the same CALL-ID and TAG as the
|
||||
INVITE that opened the SIP dialogue */
|
||||
/*--- transmit_reinvite_with_sdp: Transmit reinvite with SDP :-) ---*/
|
||||
/* A re-invite is basically a new INVITE with the same CALL-ID and TAG as the
|
||||
INVITE that opened the SIP dialogue
|
||||
We reinvite so that the audio stream (RTP) go directly between
|
||||
the SIP UAs. SIP Signalling stays with * in the path.
|
||||
*/
|
||||
static int transmit_reinvite_with_sdp(struct sip_pvt *p)
|
||||
{
|
||||
struct sip_request req;
|
||||
@@ -6563,6 +6570,7 @@ static void parse_moved_contact(struct sip_pvt *p, struct sip_request *req)
|
||||
}
|
||||
}
|
||||
|
||||
/*--- check_pendings: Check pending actions on SIP call ---*/
|
||||
static void check_pendings(struct sip_pvt *p)
|
||||
{
|
||||
/* Go ahead and send bye at this point */
|
||||
@@ -8865,6 +8873,7 @@ static struct ast_rtp *sip_get_vrtp_peer(struct ast_channel *chan)
|
||||
return rtp;
|
||||
}
|
||||
|
||||
/*--- sip_set_rtp_peer: Set the RTP peer for this call ---*/
|
||||
static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs)
|
||||
{
|
||||
struct sip_pvt *p;
|
||||
|
Reference in New Issue
Block a user