[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