[Freeswitch-svn] [commit] r7160 - in freeswitch/trunk/src: . include mod/applications/mod_dptools

Freeswitch SVN anthm at freeswitch.org
Wed Jan 9 19:45:29 EST 2008


Author: anthm
Date: Wed Jan  9 19:45:28 2008
New Revision: 7160

Modified:
   freeswitch/trunk/src/include/switch_channel.h
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/switch_ivr_bridge.c

Log:
minor changes

Modified: freeswitch/trunk/src/include/switch_channel.h
==============================================================================
--- freeswitch/trunk/src/include/switch_channel.h	(original)
+++ freeswitch/trunk/src/include/switch_channel.h	Wed Jan  9 19:45:28 2008
@@ -470,7 +470,7 @@
 SWITCH_DECLARE(char *) switch_channel_build_param_string(switch_channel_t *channel, switch_caller_profile_t *caller_profile, const char *prefix);
 SWITCH_DECLARE(switch_status_t) switch_channel_set_timestamps(switch_channel_t *channel);
 
-#define switch_channel_stop_broadcast(_channel)	switch_channel_set_flag(_channel, CF_BREAK | CF_STOP_BROADCAST)
+#define switch_channel_stop_broadcast(_channel)	if (switch_channel_test_flag(_channel, CF_BROADCAST)) switch_channel_set_flag(_channel, CF_BREAK | CF_STOP_BROADCAST)
 
 /** @} */
 

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Wed Jan  9 19:45:28 2008
@@ -95,6 +95,17 @@
 	}
 }
 
+
+#define eavesdrop_SYNTAX "<uuid>"
+SWITCH_STANDARD_APP(three_way_function)
+{
+	if (switch_strlen_zero(data)) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", eavesdrop_SYNTAX);
+	} else {
+		switch_ivr_eavesdrop_session(session, data, ED_MUX_READ | ED_MUX_WRITE);
+	}
+}
+
 #define SET_USER_SYNTAX "<user>@<domain>"
 SWITCH_STANDARD_APP(set_user_function)
 {
@@ -1578,6 +1589,7 @@
 	SWITCH_ADD_APP(app_interface, "execute_extension", "Execute an extension", "Execute an extension", exe_function, EXE_SYNTAX, SAF_SUPPORT_NOMEDIA);
 	SWITCH_ADD_APP(app_interface, "intercept", "intercept", "intercept", intercept_function, INTERCEPT_SYNTAX, SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "eavesdrop", "eavesdrop on a uuid", "eavesdrop on a uuid", eavesdrop_function, eavesdrop_SYNTAX, SAF_NONE);
+	SWITCH_ADD_APP(app_interface, "three_way", "three way call with a uuid", "three way call with a uuid", three_way_function, eavesdrop_SYNTAX, SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "set_user", "Set a User", "Set a User", set_user_function, SET_USER_SYNTAX, SAF_SUPPORT_NOMEDIA);
 	SWITCH_ADD_APP(app_interface, "stop_dtmf", "stop inband dtmf", "Stop detecting inband dtmf.", stop_dtmf_session_function, "", SAF_NONE);
 	SWITCH_ADD_APP(app_interface, "start_dtmf", "Detect dtmf", "Detect inband dtmf on the session", dtmf_session_function, "", SAF_NONE);

Modified: freeswitch/trunk/src/switch_ivr_bridge.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_bridge.c	(original)
+++ freeswitch/trunk/src/switch_ivr_bridge.c	Wed Jan  9 19:45:28 2008
@@ -311,8 +311,9 @@
 	switch_channel_clear_flag(channel, CF_TRANSFER);
 
 	if (switch_channel_test_flag(channel, CF_ORIGINATOR)) {
+		printf("XXXXXXXXXXXXXXXXXXXOK\n");
 		switch_channel_set_state(channel, CS_TRANSMIT);
-	}
+	} else printf("XXXXXXXXXXXXXXXXXXXWTF\n");
 
 	return SWITCH_STATUS_SUCCESS;
 }
@@ -322,7 +323,7 @@
 	switch_channel_t *channel = NULL;
 	switch_core_session_t *other_session;
 	const char *other_uuid = NULL;
-
+	
 	channel = switch_core_session_get_channel(session);
 	switch_assert(channel != NULL);
 
@@ -385,7 +386,7 @@
 			switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Application-Data", "%s", switch_core_session_get_uuid(session));
 			switch_event_fire(&event);
 		}
-
+	printf("XXXXXXXXXXXXXXXXXXXBLAH\n");
 		switch_ivr_multi_threaded_bridge(session, other_session, NULL, NULL, NULL);
 		switch_core_session_rwunlock(other_session);
 	} else {
@@ -810,8 +811,8 @@
 			switch_channel_set_caller_profile(originator_channel, cp);
 			switch_channel_set_originatee_caller_profile(originator_channel, switch_caller_profile_clone(originator_session, originatee_cp));
 
-			switch_channel_set_flag(originator_channel, CF_BREAK);
-			switch_channel_set_flag(originatee_channel, CF_BREAK);
+			switch_channel_stop_broadcast(originator_channel);
+			switch_channel_stop_broadcast(originatee_channel);
 
 			switch_channel_set_flag(originator_channel, CF_TRANSFER);
 			switch_channel_set_flag(originatee_channel, CF_TRANSFER);



More information about the Freeswitch-svn mailing list