[svn-commits] mmichelson: trunk r375442 - in /trunk: ./ apps/ channels/ funcs/ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Oct 29 16:27:14 CDT 2012


Author: mmichelson
Date: Mon Oct 29 16:27:09 2012
New Revision: 375442

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=375442
Log:
Make evaluation of channel variables consistently case-sensitive.

Due to inconsistencies in how variable names were evaluated, the
decision was made to make all evaluations case-sensitive. See the
UPGRADE.txt file or https://wiki.asterisk.org/wiki/display/AST/Case+Sensitivity
for more details.

(closes issue ASTERISK-20163)
reported by Matt Jordan

Review: https://reviewboard.asterisk.org/r/2160

Modified:
    trunk/UPGRADE.txt
    trunk/apps/app_osplookup.c
    trunk/channels/chan_mgcp.c
    trunk/channels/chan_sip.c
    trunk/channels/chan_skinny.c
    trunk/funcs/func_strings.c
    trunk/main/pbx.c

Modified: trunk/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/trunk/UPGRADE.txt?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/UPGRADE.txt (original)
+++ trunk/UPGRADE.txt Mon Oct 29 16:27:09 2012
@@ -55,6 +55,12 @@
  - Analog port dialing and deferred DTMF dialing for PRI now distinguishes
    between 'w' and 'W'.  The 'w' pauses dialing for half a second.  The 'W'
    pauses dialing for one second.
+
+Dialplan:
+ - All channel and global variable names are evaluated in a case-sensitive manner.
+   In previous versions of Asterisk, variables created and evaluated in the
+   dialplan were evaluated case-insensitively, but built-in variables and variable
+   evaluation done internally within Asterisk was done case-sensitively.
 
 From 10 to 11:
 

Modified: trunk/apps/app_osplookup.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_osplookup.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/apps/app_osplookup.c (original)
+++ trunk/apps/app_osplookup.c Mon Oct 29 16:27:09 2012
@@ -2281,9 +2281,9 @@
 
 	headp = ast_channel_varshead(chan);
 	AST_LIST_TRAVERSE(headp, current, entries) {
-		if (!strcasecmp(ast_var_name(current), "OSPINPEERIP")) {
+		if (!strcmp(ast_var_name(current), "OSPINPEERIP")) {
 			source = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINTOKEN")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINTOKEN")) {
 			token = ast_var_value(current);
 		}
 	}
@@ -2405,69 +2405,69 @@
 
 	headp = ast_channel_varshead(chan);
 	AST_LIST_TRAVERSE(headp, current, entries) {
-		if (!strcasecmp(ast_var_name(current), "OSPINACTUALSRC")) {
+		if (!strcmp(ast_var_name(current), "OSPINACTUALSRC")) {
 			actualsrc = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINPEERIP")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINPEERIP")) {
 			srcdev = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINTECH")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINTECH")) {
 			ast_copy_string(results.intech, ast_var_value(current), sizeof(results.intech));
-		} else if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINHANDLE")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.inhandle) != 1) {
 				results.inhandle = OSP_INVALID_HANDLE;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPINTIMELIMIT")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINTIMELIMIT")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.intimelimit) != 1) {
 				results.intimelimit = OSP_DEF_TIMELIMIT;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPINNETWORKID")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINNETWORKID")) {
 			snetid = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINNPRN")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINNPRN")) {
 			np.rn = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINNPCIC")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINNPCIC")) {
 			np.cic = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINNPDI")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINNPDI")) {
 			if (ast_true(ast_var_value(current))) {
 				np.npdi = 1;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPINSPID")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINSPID")) {
 			np.opname[OSPC_OPNAME_SPID] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINOCN")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINOCN")) {
 			np.opname[OSPC_OPNAME_OCN] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINSPN")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINSPN")) {
 			np.opname[OSPC_OPNAME_SPN] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINALTSPN")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINALTSPN")) {
 			np.opname[OSPC_OPNAME_ALTSPN] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINMCC")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINMCC")) {
 			np.opname[OSPC_OPNAME_MCC] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINMNC")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINMNC")) {
 			np.opname[OSPC_OPNAME_MNC] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINTOHOST")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINTOHOST")) {
 			ast_copy_string(results.dest, ast_var_value(current), sizeof(results.dest));
-		} else if (!strcasecmp(ast_var_name(current), "OSPINRPIDUSER")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINRPIDUSER")) {
 			headers.rpiduser = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINPAIUSER")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINPAIUSER")) {
 			headers.paiuser = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINDIVUSER")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINDIVUSER")) {
 			headers.divuser = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINDIVHOST")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINDIVHOST")) {
 			headers.divhost = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINPCIUSER")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINPCIUSER")) {
 			headers.pciuser = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO1")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO1")) {
 			cinfo[0] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO2")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO2")) {
 			cinfo[1] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO3")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO3")) {
 			cinfo[2] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO4")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO4")) {
 			cinfo[3] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO5")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO5")) {
 			cinfo[4] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO6")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO6")) {
 			cinfo[5] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO7")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO7")) {
 			cinfo[6] = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "OSPINCUSTOMINFO8")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINCUSTOMINFO8")) {
 			cinfo[7] = ast_var_value(current);
 		}
 	}
@@ -2669,23 +2669,23 @@
 
 	headp = ast_channel_varshead(chan);
 	AST_LIST_TRAVERSE(headp, current, entries) {
-		if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
+		if (!strcmp(ast_var_name(current), "OSPINHANDLE")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.inhandle) != 1) {
 				results.inhandle = OSP_INVALID_HANDLE;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPOUTHANDLE")) {
+		} else if (!strcmp(ast_var_name(current), "OSPOUTHANDLE")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.outhandle) != 1) {
 				results.outhandle = OSP_INVALID_HANDLE;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPINTIMELIMIT")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINTIMELIMIT")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.intimelimit) != 1) {
 				results.intimelimit = OSP_DEF_TIMELIMIT;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPOUTCALLIDTYPES")) {
+		} else if (!strcmp(ast_var_name(current), "OSPOUTCALLIDTYPES")) {
 			if (sscanf(ast_var_value(current), "%30d", &callidtypes) != 1) {
 				callidtypes = OSP_CALLID_UNDEF;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPDESTREMAILS")) {
+		} else if (!strcmp(ast_var_name(current), "OSPDESTREMAILS")) {
 			if (sscanf(ast_var_value(current), "%30d", &results.numdests) != 1) {
 				results.numdests = 0;
 			}
@@ -2833,25 +2833,25 @@
 
 	headp = ast_channel_varshead(chan);
 	AST_LIST_TRAVERSE(headp, current, entries) {
-		if (!strcasecmp(ast_var_name(current), "OSPINHANDLE")) {
+		if (!strcmp(ast_var_name(current), "OSPINHANDLE")) {
 			if (sscanf(ast_var_value(current), "%30d", &inhandle) != 1) {
 				inhandle = OSP_INVALID_HANDLE;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPOUTHANDLE")) {
+		} else if (!strcmp(ast_var_name(current), "OSPOUTHANDLE")) {
 			if (sscanf(ast_var_value(current), "%30d", &outhandle) != 1) {
 				outhandle = OSP_INVALID_HANDLE;
 			}
 		} else if (!recorded &&
-			(!strcasecmp(ast_var_name(current), "OSPAUTHSTATUS") ||
-			!strcasecmp(ast_var_name(current), "OSPLOOKUPSTATUS") ||
-			!strcasecmp(ast_var_name(current), "OSPNEXTSTATUS")))
+			(!strcmp(ast_var_name(current), "OSPAUTHSTATUS") ||
+			!strcmp(ast_var_name(current), "OSPLOOKUPSTATUS") ||
+			!strcmp(ast_var_name(current), "OSPNEXTSTATUS")))
 		{
-			if (strcasecmp(ast_var_value(current), AST_OSP_SUCCESS)) {
+			if (strcmp(ast_var_value(current), AST_OSP_SUCCESS)) {
 				recorded = 1;
 			}
-		} else if (!strcasecmp(ast_var_name(current), "OSPINAUDIOQOS")) {
+		} else if (!strcmp(ast_var_name(current), "OSPINAUDIOQOS")) {
 			ast_copy_string(inqos, ast_var_value(current), sizeof(inqos));
-		} else if (!strcasecmp(ast_var_name(current), "OSPOUTAUDIOQOS")) {
+		} else if (!strcmp(ast_var_name(current), "OSPOUTAUDIOQOS")) {
 			ast_copy_string(outqos, ast_var_value(current), sizeof(outqos));
 		}
 	}

Modified: trunk/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_mgcp.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/channels/chan_mgcp.c (original)
+++ trunk/channels/chan_mgcp.c Mon Oct 29 16:27:09 2012
@@ -842,20 +842,11 @@
 	struct mgcp_endpoint *p;
 	struct mgcp_subchannel *sub;
 	char tone[50] = "";
-	const char *distinctive_ring = NULL;
-	struct varshead *headp;
-	struct ast_var_t *current;
+	const char *distinctive_ring = pbx_builtin_getvar_helper(ast, "ALERT_INFO");
 
 	ast_debug(3, "MGCP mgcp_call(%s)\n", ast_channel_name(ast));
 	sub = ast_channel_tech_pvt(ast);
 	p = sub->parent;
-	headp = ast_channel_varshead(ast);
-	AST_LIST_TRAVERSE(headp,current,entries) {
-		/* Check whether there is an ALERT_INFO variable */
-		if (strcasecmp(ast_var_name(current),"ALERT_INFO") == 0) {
-			distinctive_ring = ast_var_value(current);
-		}
-	}
 
 	ast_mutex_lock(&sub->lock);
 	switch (p->hookstate) {

Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Mon Oct 29 16:27:09 2012
@@ -6256,28 +6256,28 @@
 	}
 
 	/* Check whether there is vxml_url, distinctive ring variables */
-	headp=ast_channel_varshead(ast);
+	headp = ast_channel_varshead(ast);
 	AST_LIST_TRAVERSE(headp, current, entries) {
 		/* Check whether there is a VXML_URL variable */
-		if (!p->options->vxml_url && !strcasecmp(ast_var_name(current), "VXML_URL")) {
+		if (!p->options->vxml_url && !strcmp(ast_var_name(current), "VXML_URL")) {
 			p->options->vxml_url = ast_var_value(current);
-		} else if (!p->options->uri_options && !strcasecmp(ast_var_name(current), "SIP_URI_OPTIONS")) {
+		} else if (!p->options->uri_options && !strcmp(ast_var_name(current), "SIP_URI_OPTIONS")) {
 			p->options->uri_options = ast_var_value(current);
-		} else if (!p->options->addsipheaders && !strncasecmp(ast_var_name(current), "SIPADDHEADER", strlen("SIPADDHEADER"))) {
+		} else if (!p->options->addsipheaders && !strncmp(ast_var_name(current), "SIPADDHEADER", strlen("SIPADDHEADER"))) {
 			/* Check whether there is a variable with a name starting with SIPADDHEADER */
 			p->options->addsipheaders = 1;
-		} else if (!strcasecmp(ast_var_name(current), "SIPFROMDOMAIN")) {
+		} else if (!strcmp(ast_var_name(current), "SIPFROMDOMAIN")) {
 			ast_string_field_set(p, fromdomain, ast_var_value(current));
-		} else if (!strcasecmp(ast_var_name(current), "SIPTRANSFER")) {
+		} else if (!strcmp(ast_var_name(current), "SIPTRANSFER")) {
 			/* This is a transfered call */
 			p->options->transfer = 1;
-		} else if (!strcasecmp(ast_var_name(current), "SIPTRANSFER_REFERER")) {
+		} else if (!strcmp(ast_var_name(current), "SIPTRANSFER_REFERER")) {
 			/* This is the referrer */
 			referer = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "SIPTRANSFER_REPLACES")) {
+		} else if (!strcmp(ast_var_name(current), "SIPTRANSFER_REPLACES")) {
 			/* We're replacing a call. */
 			p->options->replaces = ast_var_value(current);
-		} else if (!strcasecmp(ast_var_name(current), "SIP_MAX_FORWARDS")) {
+		} else if (!strcmp(ast_var_name(current), "SIP_MAX_FORWARDS")) {
 			if (sscanf(ast_var_value(current), "%30d", &(p->maxforwards)) != 1) {
 				ast_log(LOG_WARNING, "The SIP_MAX_FORWARDS channel variable is not a valid integer.\n");
 			}
@@ -14025,7 +14025,7 @@
 			const struct ast_var_t *current;
 			AST_LIST_TRAVERSE(headp, current, entries) {
 				/* SIPADDHEADER: Add SIP header to outgoing call */
-				if (!strncasecmp(ast_var_name(current), "SIPADDHEADER", strlen("SIPADDHEADER"))) {
+				if (!strncmp(ast_var_name(current), "SIPADDHEADER", strlen("SIPADDHEADER"))) {
 					char *content, *end;
 					const char *header = ast_var_value(current);
 					char *headdup = ast_strdupa(header);
@@ -32615,7 +32615,7 @@
 
 	headp=ast_channel_varshead(chan);
 	AST_LIST_TRAVERSE_SAFE_BEGIN (headp, newvariable, entries) {
-		if (strncasecmp(ast_var_name(newvariable), "SIPADDHEADER", strlen("SIPADDHEADER")) == 0) {
+		if (strncmp(ast_var_name(newvariable), "SIPADDHEADER", strlen("SIPADDHEADER")) == 0) {
 			if (removeall || (!strncasecmp(ast_var_value(newvariable),inbuf,strlen(inbuf)))) {
 				if (sipdebug) {
 					ast_debug(1,"removing SIP Header \"%s\" as %s\n",

Modified: trunk/channels/chan_skinny.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_skinny.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/channels/chan_skinny.c (original)
+++ trunk/channels/chan_skinny.c Mon Oct 29 16:27:09 2012
@@ -4425,7 +4425,7 @@
 	}
 
 	AST_LIST_TRAVERSE(ast_channel_varshead(ast), current, entries) {
-		if (!(strcasecmp(ast_var_name(current),"SKINNY_AUTOANSWER"))) {
+		if (!(strcmp(ast_var_name(current), "SKINNY_AUTOANSWER"))) {
 			if (d->hookstate == SKINNY_ONHOOK && !sub->aa_sched) {
 				char buf[24];
 				int aatime;

Modified: trunk/funcs/func_strings.c
URL: http://svnview.digium.com/svn/asterisk/trunk/funcs/func_strings.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/funcs/func_strings.c (original)
+++ trunk/funcs/func_strings.c Mon Oct 29 16:27:09 2012
@@ -998,7 +998,7 @@
 	struct ast_var_t *var;
 	int len = strlen(prefix);
 	AST_LIST_TRAVERSE_SAFE_BEGIN(ast_channel_varshead(chan), var, entries) {
-		if (strncasecmp(prefix, ast_var_name(var), len) == 0) {
+		if (strncmp(prefix, ast_var_name(var), len) == 0) {
 			AST_LIST_REMOVE_CURRENT(entries);
 			ast_free(var);
 		}
@@ -1098,7 +1098,7 @@
 	memset(buf, 0, len);
 
 	AST_LIST_TRAVERSE(ast_channel_varshead(chan), newvar, entries) {
-		if (strncasecmp(ast_str_buffer(prefix), ast_var_name(newvar), ast_str_strlen(prefix)) == 0) {
+		if (strncmp(ast_str_buffer(prefix), ast_var_name(newvar), ast_str_strlen(prefix)) == 0) {
 			/* Copy everything after the prefix */
 			strncat(buf, ast_var_name(newvar) + ast_str_strlen(prefix), len - strlen(buf) - 1);
 			/* Trim the trailing ~ */
@@ -1119,7 +1119,7 @@
 	ast_str_set(&prefix, -1, HASH_PREFIX, data);
 
 	AST_LIST_TRAVERSE(ast_channel_varshead(chan), newvar, entries) {
-		if (strncasecmp(ast_str_buffer(prefix), ast_var_name(newvar), ast_str_strlen(prefix)) == 0) {
+		if (strncmp(ast_str_buffer(prefix), ast_var_name(newvar), ast_str_strlen(prefix)) == 0) {
 			/* Copy everything after the prefix */
 			ast_str_append(buf, len, "%s", ast_var_name(newvar) + ast_str_strlen(prefix));
 			/* Trim the trailing ~ */

Modified: trunk/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/pbx.c?view=diff&rev=375442&r1=375441&r2=375442
==============================================================================
--- trunk/main/pbx.c (original)
+++ trunk/main/pbx.c Mon Oct 29 16:27:09 2012
@@ -3398,7 +3398,7 @@
 		if (places[i] == &globals)
 			ast_rwlock_rdlock(&globalslock);
 		AST_LIST_TRAVERSE(places[i], variables, entries) {
-			if (!strcasecmp(ast_var_name(variables), var)) {
+			if (!strcmp(ast_var_name(variables), var)) {
 				s = ast_var_value(variables);
 				break;
 			}




More information about the svn-commits mailing list