From 8aa07b677d158d24788f71842de59cba81e02aea Mon Sep 17 00:00:00 2001 From: Chris Rienzo Date: Wed, 24 Apr 2019 14:27:27 -0400 Subject: [PATCH] FS-11807 [mod_commands] uuid_recv_dtmf changed to report OK when well formed request is consumed by dmachine or dtmf hook --- src/mod/applications/mod_commands/mod_commands.c | 7 +++---- src/switch_channel.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 3ab5007ee3..c188defa64 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -6347,11 +6347,10 @@ SWITCH_STANDARD_API(uuid_recv_dtmf_function) return SWITCH_STATUS_SUCCESS; } - if (switch_channel_queue_dtmf_string(switch_core_session_get_channel(psession), dtmf_data) == SWITCH_STATUS_SUCCESS) { - stream->write_function(stream, "+OK %s received DTMF %s.\n", uuid, dtmf_data); - } else { - stream->write_function(stream, "-ERR Operation failed\n"); + if (switch_channel_queue_dtmf_string(switch_core_session_get_channel(psession), dtmf_data) == SWITCH_STATUS_GENERR) { + goto usage; } + stream->write_function(stream, "+OK %s received DTMF %s.\n", uuid, dtmf_data); goto done; diff --git a/src/switch_channel.c b/src/switch_channel.c index 4283a16231..c638fbc628 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -570,13 +570,13 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf_string(switch_channel_ { char *p; switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0), 0, SWITCH_DTMF_APP }; - int sent = 0, dur; + int sent = 0, dur, bad_input = 0; char *string; int i, argc; char *argv[256]; if (zstr(dtmf_string)) { - return SWITCH_STATUS_FALSE; + return SWITCH_STATUS_GENERR; } @@ -619,12 +619,16 @@ SWITCH_DECLARE(switch_status_t) switch_channel_queue_dtmf_string(switch_channel_ switch_channel_get_name(channel), dtmf.digit, dur, dtmf.duration); sent++; } + } else { + bad_input++; } } } - - return sent ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; + if (sent) { + return SWITCH_STATUS_SUCCESS; + } + return bad_input ? SWITCH_STATUS_GENERR : SWITCH_STATUS_FALSE; } SWITCH_DECLARE(switch_status_t) switch_channel_dequeue_dtmf(switch_channel_t *channel, switch_dtmf_t *dtmf)