aboutsummaryrefslogtreecommitdiffstats
path: root/main/say.c
diff options
context:
space:
mode:
authorqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 20:19:13 +0000
committerqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-30 20:19:13 +0000
commit0ffe53f6f96e7f031d0b400ccb2b6833c2be7c94 (patch)
tree0f819dca75c78e2c6a3dc2ef39701bfdc7f81e50 /main/say.c
parente8624085406dce7e41a90941d4955f670b70aae7 (diff)
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
Diffstat (limited to 'main/say.c')
-rw-r--r--main/say.c34
1 files 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))