[Freeswitch-svn] [commit] r8120 - freeswitch/trunk/src

Freeswitch SVN anthm at freeswitch.org
Wed Apr 16 17:29:58 EDT 2008


Author: anthm
Date: Wed Apr 16 17:29:57 2008
New Revision: 8120

Modified:
   freeswitch/trunk/src/switch_ivr_originate.c

Log:
fix originate timeout issue

Modified: freeswitch/trunk/src/switch_ivr_originate.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_originate.c	(original)
+++ freeswitch/trunk/src/switch_ivr_originate.c	Wed Apr 16 17:29:57 2008
@@ -68,6 +68,7 @@
 };
 
 typedef enum {
+	IDX_TIMEOUT = -3,
 	IDX_CANCEL = -2,
 	IDX_NADA = -1
 } abort_t;
@@ -919,7 +920,7 @@
 
 					if ((switch_timestamp(NULL) - start) > (time_t) timelimit_sec) {
 						to++;
-						idx = IDX_CANCEL;
+						idx = IDX_TIMEOUT;
 						goto notready;
 					}
 
@@ -1039,7 +1040,7 @@
 				// When the AND operator is being used, and fail_on_single_reject is set, a hangup indicates that the call should fail.
 				if ((to = (uint8_t) ((switch_timestamp(NULL) - start) >= (time_t) timelimit_sec))
 					|| (fail_on_single_reject && hups)) {
-					idx = IDX_CANCEL;
+					idx = IDX_TIMEOUT;
 					goto notready;
 				}
 
@@ -1120,7 +1121,7 @@
 											   switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA)))) {
 				switch_core_session_reset(session, SWITCH_FALSE);
 			}
-
+			
 			for (i = 0; i < and_argc; i++) {
 				if (!peer_channels[i]) {
 					continue;
@@ -1135,20 +1136,18 @@
 
 				if (i != idx) {
 					const char *holding = NULL;
-					
-					if (idx == IDX_CANCEL) {
-						if (to) {
-							reason = SWITCH_CAUSE_NO_ANSWER;
-						} else {
-							reason = SWITCH_CAUSE_ORIGINATOR_CANCEL;
-						}
+
+					if (idx == IDX_TIMEOUT || to) {
+						reason = SWITCH_CAUSE_NO_ANSWER;
 					} else {
-						if (to) {
-							reason = SWITCH_CAUSE_NO_ANSWER;
-						} else if (and_argc > 1) {
-							reason = SWITCH_CAUSE_LOSE_RACE;
+						if (idx == IDX_CANCEL) {
+							reason = SWITCH_CAUSE_ORIGINATOR_CANCEL;
 						} else {
-							reason = SWITCH_CAUSE_NO_ANSWER;
+							if (and_argc > 1) {
+								reason = SWITCH_CAUSE_LOSE_RACE;
+							} else {
+								reason = SWITCH_CAUSE_NO_ANSWER;
+							}
 						}
 					}
 					



More information about the Freeswitch-svn mailing list