]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix input event checker pre-empting return value from dtmf checker when both are...
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 1 Jul 2013 19:31:43 +0000 (14:31 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 1 Jul 2013 19:31:43 +0000 (14:31 -0500)
src/switch_ivr.c
src/switch_ivr_play_say.c

index a99070d241a855f330992d3325bb65d8739a7570..ba4ad8beadafc776a1019dab94269ddd245a6467 100644 (file)
@@ -275,7 +275,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session,
                                switch_event_t *event = NULL;
 
                                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                                       status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       if (ostatus != SWITCH_STATUS_SUCCESS) {
+                                               status = ostatus;
+                                       }
                                        switch_event_destroy(&event);
                                }
                        }
@@ -1092,7 +1095,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_park(switch_core_session_t *session,
 
                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
                        if (args && args->input_callback) {
-                               if ((status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
+                               switch_status_t ostatus;
+
+                               if ((ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
+                                       status = ostatus;
                                        break;
                                }
                        } else {
@@ -1210,7 +1216,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_callback(switch_core_s
                }
 
                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                       status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                       switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                       if (ostatus != SWITCH_STATUS_SUCCESS) {
+                               status = ostatus;
+                       }
                        switch_event_destroy(&event);
                }
 
index fe62b911a07f5c0f97e5a8e4c1d9a1f976141e20..1f2f076a06289834916e99fc10e9476c516d823c 100644 (file)
@@ -687,9 +687,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
 
                        if (args->input_callback) {
                                switch_event_t *event = NULL;
+                               switch_status_t ostatus;
 
                                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                                       status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       if ((ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen)) != SWITCH_STATUS_SUCCESS) {
+                                               status = ostatus;
+                                       }
+                                       
                                        switch_event_destroy(&event);
                                }
                        }
@@ -941,7 +945,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_gentones(switch_core_session_t *sessi
                                switch_event_t *event;
                                
                                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                                       status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       if (ostatus != SWITCH_STATUS_SUCCESS) {
+                                               status = ostatus;
+                                       }
                                        switch_event_destroy(&event);
                                }
                        }
@@ -1433,7 +1440,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                                        switch_event_t *event;
 
                                        if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                                               status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                               switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                               if (ostatus != SWITCH_STATUS_SUCCESS) {
+                                                       status = ostatus;
+                                               }
                                                switch_event_destroy(&event);
                                        }
                                }
@@ -2278,7 +2288,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session
 
                        if (args->input_callback) {
                                if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
-                                       status = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       switch_status_t ostatus = args->input_callback(session, event, SWITCH_INPUT_TYPE_EVENT, args->buf, args->buflen);
+                                       if (ostatus != SWITCH_STATUS_SUCCESS) {
+                                               status = ostatus;
+                                       }
                                        switch_event_destroy(&event);
                                }
                        }