From 0ffe53f6f96e7f031d0b400ccb2b6833c2be7c94 Mon Sep 17 00:00:00 2001 From: qwell Date: Mon, 30 Jul 2007 20:19:13 +0000 Subject: [PATCH] Merged revisions 77795 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 (closes issue #10083) ........ r77795 | qwell | 2007-07-30 15:17:08 -0500 (Mon, 30 Jul 2007) | 6 lines Applications like SayAlpha() should not hang up the channel if you request an "unknown" character such as a comma. Instead, skip the character and move on. Issue 10083, initial patch by jsmith, modified by me. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@77796 f38db490-d61c-443f-a65b-d21fe96a405b --- main/say.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/main/say.c b/main/say.c index 3ad8e7327..9ed4817ff 100644 --- a/main/say.c +++ b/main/say.c @@ -126,14 +126,16 @@ static int say_character_str_full(struct ast_channel *chan, const char *str, con fnbuf[8] = ltr; fn = fnbuf; } - res = ast_streamfile(chan, fn, lang); - if (!res) { - if ((audiofd > -1) && (ctrlfd > -1)) - res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); - else - res = ast_waitstream(chan, ints); + if (fn && ast_fileexists(fn, NULL, NULL) > 0) { + res = ast_streamfile(chan, fn, lang); + if (!res) { + if ((audiofd > -1) && (ctrlfd > -1)) + res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); + else + res = ast_waitstream(chan, ints); + } + ast_stopstream(chan); } - ast_stopstream(chan); num++; } @@ -204,14 +206,16 @@ static int say_phonetic_str_full(struct ast_channel *chan, const char *str, cons fnbuf[9] = ltr; fn = fnbuf; } - res = ast_streamfile(chan, fn, lang); - if (!res) { - if ((audiofd > -1) && (ctrlfd > -1)) - res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); - else - res = ast_waitstream(chan, ints); + if (fn && ast_fileexists(fn, NULL, NULL) > 0) { + res = ast_streamfile(chan, fn, lang); + if (!res) { + if ((audiofd > -1) && (ctrlfd > -1)) + res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); + else + res = ast_waitstream(chan, ints); + } + ast_stopstream(chan); } - ast_stopstream(chan); num++; } @@ -252,7 +256,7 @@ static int say_digit_str_full(struct ast_channel *chan, const char *str, const c fn = fnbuf; break; } - if (fn) { + if (fn && ast_fileexists(fn, NULL, NULL) > 0) { res = ast_streamfile(chan, fn, lang); if (!res) { if ((audiofd > -1) && (ctrlfd > -1))