]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
pass cancel_cause into enterprise_originate
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 1 Sep 2011 17:37:58 +0000 (12:37 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 1 Sep 2011 17:37:58 +0000 (12:37 -0500)
src/include/switch_ivr.h
src/switch_ivr_originate.c

index 5ce8c882d2d08ef18031cacf7a16bbef4cd3e365..6b2a10d43f764ac5dda108ee7cc96bfae7b6c7e1 100644 (file)
@@ -464,7 +464,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_enterprise_originate(switch_core_sess
                                                                                                                                const char *cid_name_override,
                                                                                                                                const char *cid_num_override,
                                                                                                                                switch_caller_profile_t *caller_profile_override,
-                                                                                                                               switch_event_t *ovars, switch_originate_flag_t flags);
+                                                                                                                               switch_event_t *ovars, switch_originate_flag_t flags,
+                                                                                                                               switch_call_cause_t *cancel_cause);
 
 SWITCH_DECLARE(void) switch_ivr_bridge_display(switch_core_session_t *session, switch_core_session_t *peer_session);
 
index 418c9dd2b5f5a8127e91a2f26a7b2062ff762e7b..3addeb3c4603c34d6096179d8f279ab6e31a9ce4 100644 (file)
@@ -1330,7 +1330,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_enterprise_originate(switch_core_sess
                                                                                                                                const char *cid_name_override,
                                                                                                                                const char *cid_num_override,
                                                                                                                                switch_caller_profile_t *caller_profile_override,
-                                                                                                                               switch_event_t *ovars, switch_originate_flag_t flags)
+                                                                                                                               switch_event_t *ovars, switch_originate_flag_t flags, 
+                                                                                                                               switch_call_cause_t *cancel_cause)
 {
        int x_argc = 0;
        char *x_argv[MAX_PEERS] = { 0 };
@@ -1480,6 +1481,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_enterprise_originate(switch_core_sess
                        break;
                }
 
+               if (cancel_cause && *cancel_cause > 0) {
+                       break;
+               }
+
                for (i = 0; i < x_argc; i++) {
 
 
@@ -1521,7 +1526,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_enterprise_originate(switch_core_sess
                if (hp == &handles[i]) {
                        continue;
                }
-               handles[i].cancel_cause = SWITCH_CAUSE_LOSE_RACE;
+
+               if (cancel_cause && *cancel_cause > 0) {
+                       handles[i].cancel_cause = *cancel_cause;
+               } else {
+                       handles[i].cancel_cause = SWITCH_CAUSE_LOSE_RACE;
+               }
        }
 
        for (i = 0; i < x_argc; i++) {
@@ -1738,7 +1748,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
        
        if (strstr(bridgeto, SWITCH_ENT_ORIGINATE_DELIM)) {
                return switch_ivr_enterprise_originate(session, bleg, cause, bridgeto, timelimit_sec, table, cid_name_override, cid_num_override,
-                                                                                          caller_profile_override, ovars, flags);
+                                                                                          caller_profile_override, ovars, flags, cancel_cause);
        }
 
        oglobals.ringback_ok = 1;