diff options
-rw-r--r-- | apps/app_dial.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c index b95831869..79bcbc97f 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1767,22 +1767,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); } } |