[Freeswitch-svn] [commit] r6935 - freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk

Freeswitch SVN mikej at freeswitch.org
Fri Dec 21 00:36:52 EST 2007


Author: mikej
Date: Fri Dec 21 00:36:52 2007
New Revision: 6935

Modified:
   freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c

Log:
more error checking.

Modified: freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
==============================================================================
--- freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c	(original)
+++ freeswitch/trunk/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c	Fri Dec 21 00:36:52 2007
@@ -154,18 +154,18 @@
 	}
 
 	channel = switch_core_session_get_channel(session);
-	assert(channel != NULL);
+	switch_assert(channel != NULL);
 
 	if (!caller_profile) {
 		caller_profile = switch_channel_get_caller_profile(channel);
 	}
 	
-	if (caller_profile && !switch_strlen_zero(caller_profile->destination_number)) {
-		context = caller_profile->context ? caller_profile->context : "default";
-	} else {
+	if (!caller_profile || switch_strlen_zero(caller_profile->destination_number)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Obtaining Profile!\n");
 		return NULL;
 	}
+
+	context = caller_profile->context ? caller_profile->context : "default";
 	
 	if (!switch_config_open_file(&cfg, cf)) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);
@@ -188,7 +188,7 @@
 				char *argument = NULL;
 				char *expression = NULL, expression_buf[1024] = "";
 				char substituted[2048] = "";
-				char *field_data = caller_profile->destination_number;
+				const char *field_data = caller_profile->destination_number;
 				int proceed = 0;
 				switch_regex_t *re = NULL;
 				int ovector[30] = {0};
@@ -220,7 +220,7 @@
 							field_data = field_expanded;
 						}
 					} else {
-						field_data = (char *)switch_caller_get_field_by_name(caller_profile, var);
+						field_data = switch_caller_get_field_by_name(caller_profile, var);
 					}
 				}
 				
@@ -236,6 +236,10 @@
 						expression = pattern;
 					}
 					
+					if (!field_data) {
+						field_data = "";
+					}
+
 					if (!(proceed = switch_regex_perform(field_data, expression, &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) {
 						switch_regex_safe_free(re);
 						switch_safe_free(field_expanded);
@@ -275,6 +279,10 @@
 					argument = "";
 				}
 
+				if (!field_data) {
+					field_data = "";
+				}
+
 				if (strchr(expression, '(')) {
 					switch_perform_substitution(re, proceed, argument, field_data, substituted, sizeof(substituted), ovector);
 					argument = substituted;



More information about the Freeswitch-svn mailing list