[asterisk-commits] mnicholson: branch 1.8 r318720 - /branches/1.8/channels/sip/reqresp_parser.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu May 12 18:35:54 CDT 2011


Author: mnicholson
Date: Thu May 12 18:35:51 2011
New Revision: 318720

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=318720
Log:
Handle ipv6 addresses in the sent-by Via: field.

This change fixes a regression in via header parsing and ipv6 handling.

Modified:
    branches/1.8/channels/sip/reqresp_parser.c

Modified: branches/1.8/channels/sip/reqresp_parser.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/channels/sip/reqresp_parser.c?view=diff&rev=318720&r1=318719&r2=318720
==============================================================================
--- branches/1.8/channels/sip/reqresp_parser.c (original)
+++ branches/1.8/channels/sip/reqresp_parser.c Thu May 12 18:35:51 2011
@@ -2302,8 +2302,9 @@
 	}
 	v->sent_by = ast_skip_blanks(v->sent_by);
 
-	/* store the port */
-	if ((parm = strchr(v->sent_by, ':'))) {
+	/* store the port, we have to handle ipv6 addresses containing ':'
+	 * characters gracefully */
+	if (((parm = strchr(v->sent_by, ']')) && *(++parm) == ':') || (parm = strchr(v->sent_by, ':'))) {
 		char *endptr;
 
 		v->port = strtol(++parm, &endptr, 10);
@@ -2389,6 +2390,13 @@
 		.expected_maddr = "224.0.0.1",
 		.expected_ttl = 1,
 	};
+	struct testdata t7 = {
+		.in = "SIP/2.0/UDP [::1]:5060",
+		.expected_protocol = "SIP/2.0/UDP",
+		.expected_sent_by = "[::1]:5060",
+		.expected_port = 5060,
+		.expected_branch = "",
+	};
 	switch (cmd) {
 	case TEST_INIT:
 		info->name = "parse_via_test";
@@ -2408,6 +2416,7 @@
 	AST_LIST_INSERT_TAIL(&testdatalist, &t4, list);
 	AST_LIST_INSERT_TAIL(&testdatalist, &t5, list);
 	AST_LIST_INSERT_TAIL(&testdatalist, &t6, list);
+	AST_LIST_INSERT_TAIL(&testdatalist, &t7, list);
 
 
 	AST_LIST_TRAVERSE(&testdatalist, testdataptr, list) {




More information about the asterisk-commits mailing list