]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7929 #resolve [ignore_early_media=true behaviour]
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 8 Oct 2015 18:17:39 +0000 (13:17 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 8 Oct 2015 18:17:39 +0000 (13:17 -0500)
src/include/switch_ivr.h
src/mod/applications/mod_dptools/mod_dptools.c
src/switch_ivr.c

index 412cb637577e3be10afa923e450ac4f599a94448..ca0c710273dbb3c934c51406102b97d0b1e06799 100644 (file)
@@ -122,6 +122,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_events(switch_core_session_
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_event(switch_core_session_t *session);
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_messages(switch_core_session_t *session);
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_signal_data(switch_core_session_t *session);
+SWITCH_DECLARE(switch_status_t) switch_ivr_parse_signal_data(switch_core_session_t *session, switch_bool_t all, switch_bool_t only_session_thread);
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_signal_data(switch_core_session_t *session);
 SWITCH_DECLARE(switch_status_t) switch_ivr_process_indications(switch_core_session_t *session, switch_core_session_message_t *message);
 
index 310aa302e4c8b7ccc6511ea394f50a755610742b..cf6fd956f5f09c2a7bf4c57aaa74f65eec12979d 100644 (file)
@@ -3146,6 +3146,8 @@ static void *SWITCH_THREAD_FUNC camp_music_thread(switch_thread_t *thread, void
        }
 
        while (stake->running && switch_channel_ready(channel)) {
+               switch_ivr_parse_signal_data(session, SWITCH_TRUE, SWITCH_FALSE);
+
                if (status != SWITCH_STATUS_BREAK) {
                        if (!strcasecmp(moh, "silence")) {
                                status = switch_ivr_collect_digits_callback(session, &args, 0, 0);
index c861366960dfc5352870194a2d7251a081beea72..766aa0d8ad773762f3d3985473f3b566cb762948 100644 (file)
@@ -820,14 +820,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_messages(switch_core_sessio
 }
 
 
-static switch_status_t switch_ivr_parse_signal_data(switch_core_session_t *session, switch_bool_t all)
+SWITCH_DECLARE(switch_status_t) switch_ivr_parse_signal_data(switch_core_session_t *session, switch_bool_t all, switch_bool_t only_session_thread)
 {
        void *data;
        switch_core_session_message_t msg = { 0 };
        int i = 0;
        switch_channel_t *channel = switch_core_session_get_channel(session);
 
-       if (!switch_core_session_in_thread(session)) {
+       if (only_session_thread && !switch_core_session_in_thread(session)) {
                return SWITCH_STATUS_FALSE;
        }
 
@@ -857,11 +857,11 @@ static switch_status_t switch_ivr_parse_signal_data(switch_core_session_t *sessi
 }
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_signal_data(switch_core_session_t *session) {
-       return switch_ivr_parse_signal_data(session, SWITCH_TRUE);
+       return switch_ivr_parse_signal_data(session, SWITCH_TRUE, SWITCH_FALSE);
 }
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_signal_data(switch_core_session_t *session) {
-       return switch_ivr_parse_signal_data(session, SWITCH_FALSE);
+       return switch_ivr_parse_signal_data(session, SWITCH_FALSE, SWITCH_FALSE);
 }
 
 SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_events(switch_core_session_t *session)