Revision
17426
Author
anthm
Date
2010-04-27 16:52:40 -0500 (Tue, 27 Apr 2010)

Log Message

add callee id to events and add global param verbose-channel-events and fsctl verbose_events [on|off] to globally configure verbose events

Modified Paths

Diff

Modified: freeswitch/trunk/conf/autoload_configs/switch.conf.xml (17425 => 17426)


--- freeswitch/trunk/conf/autoload_configs/switch.conf.xml	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/conf/autoload_configs/switch.conf.xml	2010-04-27 21:52:40 UTC (rev 17426)
@@ -72,6 +72,8 @@
     <param name="mailer-app" value="sendmail"/>
     <param name="mailer-app-args" value="-t"/>
     <param name="dump-cores" value="yes"/>
+    <!-- enable verbose-channel-events to dump every detail about a channel on every event  -->
+    <!--<param name="verbose-channel-events" value="no"/>-->
     <!--RTP port range -->
     <!--<param name="rtp-start-port" value="16384"/>-->
     <!--<param name="rtp-end-port" value="32768"/>-->

Modified: freeswitch/trunk/src/include/switch_types.h (17425 => 17426)


--- freeswitch/trunk/src/include/switch_types.h	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/src/include/switch_types.h	2010-04-27 21:52:40 UTC (rev 17426)
@@ -248,7 +248,8 @@
 	SCF_EARLY_HANGUP = (1 << 7),
 	SCF_CALIBRATE_CLOCK = (1 << 8),
 	SCF_USE_HEAVY_TIMING = (1 << 9),
-	SCF_USE_CLOCK_RT = (1 << 10)
+	SCF_USE_CLOCK_RT = (1 << 10),
+	SCF_VERBOSE_EVENTS = (1 << 11)
 } switch_core_flag_enum_t;
 typedef uint32_t switch_core_flag_t;
 
@@ -1494,7 +1495,8 @@
 	SCSC_CALIBRATE_CLOCK,
 	SCSC_SAVE_HISTORY,
 	SCSC_CRASH,
-	SCSC_MIN_IDLE_CPU
+	SCSC_MIN_IDLE_CPU,
+	SCSC_VERBOSE_EVENTS
 } switch_session_ctl_t;
 
 typedef enum {

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (17425 => 17426)


--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2010-04-27 21:52:40 UTC (rev 17426)
@@ -1500,6 +1500,16 @@
 		} else if (!strcasecmp(argv[0], "crash")) {
 			switch_core_session_ctl(SCSC_CRASH, NULL);
 			stream->write_function(stream, "+OK\n");
+		} else if (!strcasecmp(argv[0], "verbose_events")) {
+			arg = -1;
+			if (argv[1]) {
+				arg = switch_true(argv[1]);
+			}
+
+			switch_core_session_ctl(SCSC_VERBOSE_EVENTS, &arg);
+
+			stream->write_function(stream, "+OK verbose_events is %s \n", arg ? "on" : "off");
+			
 		} else if (!strcasecmp(argv[0], "save_history")) {
 			switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL);
 			stream->write_function(stream, "+OK\n");

Modified: freeswitch/trunk/src/switch_caller.c (17425 => 17426)


--- freeswitch/trunk/src/switch_caller.c	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/src/switch_caller.c	2010-04-27 21:52:40 UTC (rev 17426)
@@ -271,6 +271,14 @@
 		switch_snprintf(header_name, sizeof(header_name), "%s-Caller-ID-Number", prefix);
 		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->caller_id_number);
 	}
+	if (!zstr(caller_profile->callee_id_name)) {
+		switch_snprintf(header_name, sizeof(header_name), "%s-Callee-ID-Name", prefix);
+		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->callee_id_name);
+	}
+	if (!zstr(caller_profile->callee_id_number)) {
+		switch_snprintf(header_name, sizeof(header_name), "%s-Callee-ID-Number", prefix);
+		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->callee_id_number);
+	}
 	if (!zstr(caller_profile->network_addr)) {
 		switch_snprintf(header_name, sizeof(header_name), "%s-Network-Addr", prefix);
 		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, caller_profile->network_addr);

Modified: freeswitch/trunk/src/switch_channel.c (17425 => 17426)


--- freeswitch/trunk/src/switch_channel.c	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/src/switch_channel.c	2010-04-27 21:52:40 UTC (rev 17426)
@@ -1677,11 +1677,13 @@
 SWITCH_DECLARE(void) switch_channel_event_set_extended_data(switch_channel_t *channel, switch_event_t *event)
 {
 	switch_event_header_t *hi;
-	int x;
+	int x, global_verbos_events = 0;
 
 	switch_mutex_lock(channel->profile_mutex);
 
-	if (switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) ||
+	switch_core_session_ctl(SCSC_VERBOSE_EVENTS, &global_verbos_events);
+
+	if (global_verbos_events || switch_channel_test_flag(channel, CF_VERBOSE_EVENTS) ||
 		event->event_id == SWITCH_EVENT_CHANNEL_CREATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_ORIGINATE ||
 		event->event_id == SWITCH_EVENT_CHANNEL_UUID ||

Modified: freeswitch/trunk/src/switch_core.c (17425 => 17426)


--- freeswitch/trunk/src/switch_core.c	2010-04-28 14:18:58 UTC (rev 17425)
+++ freeswitch/trunk/src/switch_core.c	2010-04-27 21:52:40 UTC (rev 17426)
@@ -1448,6 +1448,13 @@
 					switch_time_set_matrix(switch_true(var));
 				} else if (!strcasecmp(var, "max-sessions") && !zstr(val)) {
 					switch_core_session_limit(atoi(val));
+				} else if (!strcasecmp(var, "verbose-channel-events") && !zstr(val)) {
+					int v = switch_true(val);
+					if (v) {
+						switch_set_flag((&runtime), SCF_VERBOSE_EVENTS);
+					} else {
+						switch_clear_flag((&runtime), SCF_VERBOSE_EVENTS);
+					}
 				} else if (!strcasecmp(var, "min-idle-cpu") && !zstr(val)) {
 					switch_core_min_idle_cpu(atof(val));
 				} else if (!strcasecmp(var, "tipping-point") && !zstr(val)) {
@@ -1639,12 +1646,29 @@
 SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *val)
 {
 	int *intval = (int *) val;
+	int oldintval = 0, newintval = 0;
+	
+	if (intval) {
+		oldintval = *intval;
+	}
 
 	if (switch_test_flag((&runtime), SCF_SHUTTING_DOWN)) {
 		return -1;
 	}
 
 	switch (cmd) {
+	case SCSC_VERBOSE_EVENTS:
+		if (intval) {
+			if (oldintval > -1) {
+				if (oldintval) {
+					switch_set_flag((&runtime), SCF_VERBOSE_EVENTS);
+				} else {
+					switch_clear_flag((&runtime), SCF_VERBOSE_EVENTS);
+				}
+			}
+			newintval = switch_test_flag((&runtime), SCF_VERBOSE_EVENTS);
+		}
+		break;
 	case SCSC_CALIBRATE_CLOCK:
 		switch_time_calibrate_clock();
 		break;
@@ -1656,10 +1680,10 @@
 		break;
 	case SCSC_SYNC_CLOCK:
 		switch_time_sync();
-		*intval = 0;
+		newintval = 0;
 		break;
 	case SCSC_PAUSE_INBOUND:
-		if (*intval) {
+		if (oldintval) {
 			switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS);
 		} else {
 			switch_clear_flag((&runtime), SCF_NO_NEW_SESSIONS);
@@ -1710,7 +1734,7 @@
 				win_shutdown();
 #endif
 
-				if (*intval) {
+				if (oldintval) {
 					switch_set_flag((&runtime), SCF_RESTART);
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");
 				} else {
@@ -1732,7 +1756,7 @@
 		win_shutdown();
 #endif
 
-		if (*intval) {
+		if (oldintval) {
 			switch_set_flag((&runtime), SCF_RESTART);
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");
 		} else {
@@ -1744,63 +1768,70 @@
 		runtime.running = 0;
 		break;
 	case SCSC_CHECK_RUNNING:
-		*intval = runtime.running;
+		newintval = runtime.running;
 		break;
 	case SCSC_LOGLEVEL:
-		if (*intval > -1) {
-			runtime.hard_log_level = *intval;
+		if (oldintval > -1) {
+			runtime.hard_log_level = oldintval;
 		}
 
 		if (runtime.hard_log_level > SWITCH_LOG_DEBUG) {
 			runtime.hard_log_level = SWITCH_LOG_DEBUG;
 		}
-		*intval = runtime.hard_log_level;
+		newintval = runtime.hard_log_level;
 		break;
 	case SCSC_DEBUG_LEVEL:
-		if (*intval > -1) {
-			if (*intval > 10)
-				*intval = 10;
-			runtime.debug_level = *intval;
+		if (oldintval > -1) {
+			if (oldintval > 10)
+				newintval = 10;
+			runtime.debug_level = oldintval;
 		}
-		*intval = runtime.debug_level;
+		newintval = runtime.debug_level;
 		break;
 	case SCSC_MIN_IDLE_CPU:
 		{
 			double *dval = (double *) val;
-			*dval = switch_core_min_idle_cpu(*dval);
+			if (dval) {
+				*dval = switch_core_min_idle_cpu(*dval);
+			}
+			intval = NULL;
 		}
 		break;
 	case SCSC_MAX_SESSIONS:
-		*intval = switch_core_session_limit(*intval);
+		newintval = switch_core_session_limit(oldintval);
 		break;
 	case SCSC_LAST_SPS:
-		*intval = runtime.sps_last;
+		newintval = runtime.sps_last;
 		break;
 	case SCSC_MAX_DTMF_DURATION:
-		*intval = switch_core_max_dtmf_duration(*intval);
+		newintval = switch_core_max_dtmf_duration(oldintval);
 		break;
 	case SCSC_MIN_DTMF_DURATION:
-		*intval = switch_core_min_dtmf_duration(*intval);
+		newintval = switch_core_min_dtmf_duration(oldintval);
 		break;
 	case SCSC_DEFAULT_DTMF_DURATION:
-		*intval = switch_core_default_dtmf_duration(*intval);
+		newintval = switch_core_default_dtmf_duration(oldintval);
 		break;
 	case SCSC_SPS:
 		switch_mutex_lock(runtime.throttle_mutex);
-		if (*intval > 0) {
-			runtime.sps_total = *intval;
+		if (oldintval > 0) {
+			runtime.sps_total = oldintval;
 		}
-		*intval = runtime.sps_total;
+		newintval = runtime.sps_total;
 		switch_mutex_unlock(runtime.throttle_mutex);
 		break;
 
 	case SCSC_RECLAIM:
 		switch_core_memory_reclaim_all();
-		*intval = 0;
+		newintval = 0;
 		break;
 	}
 
+	if (intval) {
+		*intval = newintval;
+	}
 
+
 	return 0;
 }