From fe65716e15cbb013a0b6b85c361f93c45a9d7c92 Mon Sep 17 00:00:00 2001 From: Jason Parker Date: Tue, 15 Apr 2008 20:27:04 +0000 Subject: If somebody enters a digit during ast_stream_and_wait, the return value is the digit, which we need to use later. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114149 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_directory.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'apps') diff --git a/apps/app_directory.c b/apps/app_directory.c index 03f8dbbe2..981e1f1de 100644 --- a/apps/app_directory.c +++ b/apps/app_directory.c @@ -858,14 +858,23 @@ static int directory_exec(struct ast_channel *chan, void *data) if (!ast_strlen_zero(dirintro) && !res) { res = ast_stream_and_wait(chan, dirintro, AST_DIGIT_ANY); } else if (!res) { - res = ast_stream_and_wait(chan, "dir-welcome", AST_DIGIT_ANY) || - ast_stream_and_wait(chan, "dir-pls-enter", AST_DIGIT_ANY) || - ast_stream_and_wait(chan, digits, AST_DIGIT_ANY) || - ast_stream_and_wait(chan, + /* Stop playing sounds as soon as we have a digit. */ + res = ast_stream_and_wait(chan, "dir-welcome", AST_DIGIT_ANY); + if (!res) { + res = ast_stream_and_wait(chan, "dir-pls-enter", AST_DIGIT_ANY); + } + if (!res) { + res = ast_stream_and_wait(chan, digits, AST_DIGIT_ANY); + } + if (!res) { + res = ast_stream_and_wait(chan, which == FIRST ? "dir-first" : which == LAST ? "dir-last" : - "dir-firstlast", AST_DIGIT_ANY) || + "dir-firstlast", AST_DIGIT_ANY); + } + if (!res) { ast_stream_and_wait(chan, "dir-usingkeypad", AST_DIGIT_ANY); + } } ast_stopstream(chan); if (!res) -- cgit v1.2.3