diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index f3dde9ec31..7a38596877 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1563,7 +1563,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v while (switch_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) { - if (switch_channel_test_flag(channel, CF_SERVICE)) { + if (switch_channel_test_app_flag(channel, CF_APP_TAGGED)) { switch_yield(100000); continue; } @@ -1878,7 +1878,7 @@ static void conference_loop_output(conference_member_t *member) } if (restarting) { - switch_channel_clear_flag(channel, CF_SERVICE); + switch_channel_clear_app_flag(channel, CF_APP_TAGGED); } /* Fair WARNING, If you expect the caller to hear anything or for digit handling to be processed, */ @@ -2094,9 +2094,9 @@ static void conference_loop_output(conference_member_t *member) if (switch_core_session_private_event_count(member->session)) { - switch_channel_set_flag(channel, CF_SERVICE); + switch_channel_set_app_flag(channel, CF_APP_TAGGED); switch_ivr_parse_all_events(member->session); - switch_channel_clear_flag(channel, CF_SERVICE); + switch_channel_clear_app_flag(channel, CF_APP_TAGGED); switch_set_flag_locked(member, MFLAG_FLUSH_BUFFER); switch_core_session_set_read_codec(member->session, &member->read_codec); } @@ -3697,7 +3697,7 @@ static switch_status_t conf_api_sub_transfer(conference_obj_t *conference, switc if (setup_media(member, new_conference)) { switch_clear_flag_locked(member, MFLAG_RUNNING); } else { - switch_channel_set_flag(channel, CF_SERVICE); + switch_channel_set_app_flag(channel, CF_APP_TAGGED); switch_set_flag_locked(member, MFLAG_RESTART); } } diff --git a/src/switch_ivr.c b/src/switch_ivr.c index a8721dcb89..2dbf2ad47b 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -975,9 +975,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_sess switch_ivr_parse_all_events(session); } - + if (eff_timeout) { digit_elapsed = (uint32_t) ((switch_micro_time_now() - digit_started) / 1000); + if (digit_elapsed >= eff_timeout) { status = SWITCH_STATUS_TIMEOUT; break; @@ -987,7 +988,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_sess if (switch_channel_has_dtmf(channel)) { switch_dtmf_t dtmf = { 0 }; switch_size_t y; - + if (eff_timeout) { eff_timeout = digit_timeout; digit_started = switch_micro_time_now(); @@ -1006,6 +1007,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_sess buf[x++] = dtmf.digit; buf[x] = '\0'; + if (x >= buflen || x >= maxdigits) { return SWITCH_STATUS_SUCCESS; }