From ef077917fd1915efd2744e5736bc2cd9b81fbe40 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 18 Dec 2012 14:56:44 -0600 Subject: [PATCH] FS-4867 --- .../mod_conference/mod_conference.c | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 3cfa13b625..f967a92127 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -3109,6 +3109,24 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v break; } + + /* if we have caller digits, feed them to the parser to find an action */ + if (switch_channel_has_dtmf(channel)) { + char dtmf[128] = ""; + + switch_channel_dequeue_dtmf_string(channel, dtmf, sizeof(dtmf)); + + if (switch_test_flag(member, MFLAG_DIST_DTMF)) { + conference_send_all_dtmf(member, member->conference, dtmf); + } else if (member->dmachine) { + switch_ivr_dmachine_feed(member->dmachine, dtmf, NULL); + } + } else if (member->dmachine) { + switch_ivr_dmachine_ping(member->dmachine, NULL); + } + + + if (switch_test_flag(read_frame, SFF_CNG)) { if (member->conference->agc_level) { member->nt_tally++; @@ -3582,7 +3600,6 @@ static void conference_loop_output(conference_member_t *member) /* you better not block this thread loop for more than the duration of member->conference->timer_name! */ while (switch_test_flag(member, MFLAG_RUNNING) && switch_test_flag(member, MFLAG_ITHREAD) && switch_channel_ready(channel)) { - char dtmf[128] = ""; switch_event_t *event; int use_timer = 0; switch_buffer_t *use_buffer = NULL; @@ -3626,19 +3643,6 @@ static void conference_loop_output(conference_member_t *member) } } - /* if we have caller digits, feed them to the parser to find an action */ - if (switch_channel_has_dtmf(channel)) { - switch_channel_dequeue_dtmf_string(channel, dtmf, sizeof(dtmf)); - - if (switch_test_flag(member, MFLAG_DIST_DTMF)) { - conference_send_all_dtmf(member, member->conference, dtmf); - } else if (member->dmachine) { - switch_ivr_dmachine_feed(member->dmachine, dtmf, NULL); - } - } else if (member->dmachine) { - switch_ivr_dmachine_ping(member->dmachine, NULL); - } - use_buffer = NULL; mux_used = (uint32_t) switch_buffer_inuse(member->mux_buffer);