aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-16 18:18:19 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2007-07-16 18:18:19 +0000
commit27c6701a34eed39589aa33fcfdaf264bd35fbe7e (patch)
tree062a0d7294df26b08821913e2caab87cf4486f39 /apps
parentff8346d06e8f26212920c5554023f6d7ef4e228d (diff)
Merged revisions 75253 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r75253 | mmichelson | 2007-07-16 13:16:15 -0500 (Mon, 16 Jul 2007) | 8 lines Restoring functionality from 1.2 wherein Retrydial will not exit if there is no announce file specified. This change makes it so that if there is no announce file specified, the application will continue until finished (or caller hangs up). If a bogus announce file is specified, then a warning message will be printed saying that the file could not be found, but execution will still continue. (closes issue #10186, reported by jon, patched by me) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75254 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_dial.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 4438daa8a..74546d8e1 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1888,22 +1888,33 @@ static int retrydial_exec(struct ast_channel *chan, void *data)
res = dial_exec_full(chan, dialdata, &peerflags, &continue_exec);
if (continue_exec)
break;
+
if (res == 0) {
if (ast_test_flag(&peerflags, OPT_DTMF_EXIT)) {
- if (!(res = ast_streamfile(chan, announce, chan->language)))
- res = ast_waitstream(chan, AST_DIGIT_ANY);
+ if (!ast_strlen_zero(announce)) {
+ if (ast_fileexists(announce, NULL, chan->language)) {
+ if(!(res = ast_streamfile(chan, announce, chan->language)))
+ ast_waitstream(chan, AST_DIGIT_ANY);
+ } else
+ ast_log(LOG_WARNING, "Announce file \"%s\" specified in Retrydial does not exist\n", announce);
+ }
if (!res && sleep) {
if (!ast_test_flag(chan, AST_FLAG_MOH))
ast_moh_start(chan, NULL, NULL);
res = ast_waitfordigit(chan, sleep);
}
} else {
- if (!(res = ast_streamfile(chan, announce, chan->language)))
- res = ast_waitstream(chan, "");
+ if (!ast_strlen_zero(announce)) {
+ if (ast_fileexists(announce, NULL, chan->language)) {
+ if (!(res = ast_streamfile(chan, announce, chan->language)))
+ res = ast_waitstream(chan, "");
+ } else
+ ast_log(LOG_WARNING, "Announce file \"%s\" specified in Retrydial does not exist\n", announce);
+ }
if (sleep) {
if (!ast_test_flag(chan, AST_FLAG_MOH))
ast_moh_start(chan, NULL, NULL);
- if (!res)
+ if (!res)
res = ast_waitfordigit(chan, sleep);
}
}