[Asterisk-cvs] asterisk/channels chan_sip.c,1.510.2.26,1.510.2.27
russell at lists.digium.com
russell at lists.digium.com
Sun Dec 19 20:52:19 CST 2004
Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv7546/channels
Modified Files:
Tag: v1-0
chan_sip.c
Log Message:
Fix SIP ACK for BYE (bug #3087)
Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.510.2.26
retrieving revision 1.510.2.27
diff -u -d -r1.510.2.26 -r1.510.2.27
--- chan_sip.c 20 Dec 2004 01:32:58 -0000 1.510.2.26
+++ chan_sip.c 20 Dec 2004 01:48:20 -0000 1.510.2.27
@@ -3100,6 +3100,7 @@
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 @@
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 @@
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 @@
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 @@
}
}
+/*--- 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 @@
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;
More information about the svn-commits
mailing list