[Freeswitch-svn] [commit] r3892 - freeswitch/trunk/src/mod/applications/mod_bridgecall

Freeswitch SVN anthm at freeswitch.org
Tue Jan 2 13:48:30 EST 2007


Author: anthm
Date: Tue Jan  2 13:48:30 2007
New Revision: 3892

Modified:
   freeswitch/trunk/src/mod/applications/mod_bridgecall/mod_bridgecall.c

Log:
add continue_on_fail param to bridgecall

Modified: freeswitch/trunk/src/mod/applications/mod_bridgecall/mod_bridgecall.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_bridgecall/mod_bridgecall.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_bridgecall/mod_bridgecall.c	Tue Jan  2 13:48:30 2007
@@ -44,6 +44,7 @@
 	char *var;
 	uint8_t no_media_bridge = 0;
 	switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
+    uint8_t do_continue = 0;
 
     if (switch_strlen_zero(data)) {
         return;
@@ -55,6 +56,10 @@
 	if ((var = switch_channel_get_variable(caller_channel, "call_timeout"))) {
 		timelimit = atoi(var);
 	}
+
+	if ((var = switch_channel_get_variable(caller_channel, "continue_on_fail"))) {
+		do_continue = switch_true(var);
+	}
 	
 	if ((var = switch_channel_get_variable(caller_channel, "no_media")) && switch_true(var)) {
 		if (!switch_channel_test_flag(caller_channel, CF_ANSWERED) && !switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA)) {
@@ -67,8 +72,9 @@
 
 	if (switch_ivr_originate(session, &peer_session, &cause, data, timelimit, NULL, NULL, NULL, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Originate Failed.  Cause: %s\n", switch_channel_cause2str(cause));
-        if (cause != SWITCH_CAUSE_NO_ANSWER) {
-            /* All Causes besides NO_ANSWER terminate the originating session.  We will pass that cause on when we hangup.*/
+        if (!do_continue && cause != SWITCH_CAUSE_NO_ANSWER) {
+            /* All Causes besides NO_ANSWER terminate the originating session unless continue_on_fail is set.
+               We will pass the fail cause on when we hangup.*/
             switch_channel_hangup(caller_channel, cause);
         }
         /* Otherwise.. nobody answered.  Go back to the dialplan instructions in case there was more to do. */



More information about the Freeswitch-svn mailing list