[Asterisk-cvs] asterisk/channels chan_sip.c,1.472,1.473

markster at lists.digium.com markster at lists.digium.com
Tue Aug 17 22:29:57 CDT 2004


Update of /usr/cvsroot/asterisk/channels
In directory localhost.localdomain:/tmp/cvs-serv14484/channels

Modified Files:
	chan_sip.c 
Log Message:
Add another field to track whether video was invited or not (bug #2226)


Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.472
retrieving revision 1.473
diff -u -d -r1.472 -r1.473
--- chan_sip.c	17 Aug 2004 23:53:15 -0000	1.472
+++ chan_sip.c	18 Aug 2004 02:16:04 -0000	1.473
@@ -262,6 +262,7 @@
 	int alreadygone;			/* Whether or not we've already been destroyed by or peer */
 	int needdestroy;			/* if we need to be destroyed */
 	int capability;				/* Special capability (codec) */
+	int novideo;				/* Didn't get video in invite, don't offer */
 	int jointcapability;			/* Supported capability at both ends (codecs ) */
 	int prefcodec;				/* Preferred codec (outbound only) */
 	int noncodeccapability;
@@ -2639,6 +2640,7 @@
 		return -1;
 	}
 	sdpLineNum_iterator_init(&iterator);
+	p->novideo = 1;
 	while ((m = get_sdp_iterate(&iterator, req, "m"))[0] != '\0') {
 		if ((sscanf(m, "audio %d RTP/AVP %n", &x, &len) == 1)) {
 			portno = x;
@@ -2662,6 +2664,7 @@
 			ast_rtp_pt_clear(p->vrtp);  /* Must be cleared in case no m=video line exists */
 
 		if (p->vrtp && (sscanf(m, "video %d RTP/AVP %n", &x, &len) == 1)) {
+			p->novideo = 0;
 			vportno = x;
 			/* Scan through the RTP payload types specified in a "m=" line: */
 			codecs = m + len;
@@ -3450,7 +3453,7 @@
 	if ((sizeof(m) <= strlen(m) - 2) || (sizeof(m2) <= strlen(m2) - 2) || (sizeof(a) == strlen(a)) || (sizeof(a2) == strlen(a2)))
 		ast_log(LOG_WARNING, "SIP SDP may be truncated due to undersized buffer!!\n");
 	len = strlen(v) + strlen(s) + strlen(o) + strlen(c) + strlen(t) + strlen(m) + strlen(a);
-	if ((p->vrtp) && (capability & VIDEO_CODEC_MASK)) /* only if video response is appropriate */
+	if ((p->vrtp) && (!p->novideo) && (capability & VIDEO_CODEC_MASK)) /* only if video response is appropriate */
 		len += strlen(m2) + strlen(a2);
 	snprintf(costr, sizeof(costr), "%d", len);
 	add_header(resp, "Content-Type", "application/sdp");
@@ -3462,7 +3465,7 @@
 	add_line(resp, t);
 	add_line(resp, m);
 	add_line(resp, a);
-	if ((p->vrtp) && (capability & VIDEO_CODEC_MASK)) { /* only if video response is appropriate */
+	if ((p->vrtp) && (!p->novideo) && (capability & VIDEO_CODEC_MASK)) { /* only if video response is appropriate */
 		add_line(resp, m2);
 		add_line(resp, a2);
 	}




More information about the svn-commits mailing list