[Asterisk-cvs] asterisk/channels chan_sip.c,1.576,1.577

markster at lists.digium.com markster at lists.digium.com
Sun Nov 28 16:50:14 CST 2004


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv23131/channels

Modified Files:
	chan_sip.c 
Log Message:
Add option for small headers (bug #2948)


Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.576
retrieving revision 1.577
diff -u -d -r1.576 -r1.577
--- chan_sip.c	25 Nov 2004 22:11:06 -0000	1.576
+++ chan_sip.c	28 Nov 2004 21:49:07 -0000	1.577
@@ -193,6 +193,8 @@
 
 static int videosupport = 0;
 
+static int compactheaders = 0; 						/* send compact sip headers */
+
 static int global_dtmfmode = SIP_DTMF_RFC2833;		/* DTMF mode default */
 static int recordhistory = 0;
 static int global_promiscredir;				/* Support of 302 REDIR - Default off */
@@ -2813,6 +2815,8 @@
 /*--- add_header: Add header to SIP message */
 static int add_header(struct sip_request *req, char *var, char *value)
 {
+	int x = 0;
+	char *shortname = "";
 	if (req->len >= sizeof(req->data) - 4) {
 		ast_log(LOG_WARNING, "Out of space, can't add anymore (%s:%s)\n", var, value);
 		return -1;
@@ -2821,8 +2825,18 @@
 		ast_log(LOG_WARNING, "Can't add more headers when lines have been added\n");
 		return -1;
 	}
+
 	req->header[req->headers] = req->data + req->len;
-	snprintf(req->header[req->headers], sizeof(req->data) - req->len - 4, "%s: %s\r\n", var, value);
+	if (compactheaders) {
+		for (x=0;x<sizeof(aliases) / sizeof(aliases[0]); x++)
+			if (!strcasecmp(aliases[x].fullname, var))
+				shortname = aliases[x].shortname;
+	}
+	if(!ast_strlen_zero(shortname)) {
+		snprintf(req->header[req->headers], sizeof(req->data) - req->len - 4, "%s: %s\r\n", shortname, value);
+	} else {
+		snprintf(req->header[req->headers], sizeof(req->data) - req->len - 4, "%s: %s\r\n", var, value);
+	}
 	req->len += strlen(req->header[req->headers]);
 	if (req->headers < SIP_MAX_HEADERS)
 		req->headers++;
@@ -8631,6 +8645,7 @@
 	strncpy(default_callerid, DEFAULT_CALLERID, sizeof(default_callerid) - 1);
 	global_canreinvite = REINVITE_INVITE;
 	videosupport = 0;
+	compactheaders = 0;
 	relaxdtmf = 0;
 	ourport = DEFAULT_SIP_PORT;
 	global_rtptimeout = 0;
@@ -8696,6 +8711,8 @@
 			}
 		} else if (!strcasecmp(v->name, "videosupport")) {
 			videosupport = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "compactheaders")) {
+			compactheaders = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "notifymimetype")) {
 			strncpy(default_notifymime, v->value, sizeof(default_notifymime) - 1);
 		} else if (!strcasecmp(v->name, "musicclass")) {




More information about the svn-commits mailing list