]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 75253 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Mon, 16 Jul 2007 18:18:19 +0000 (18:18 +0000)
committerMark Michelson <mmichelson@digium.com>
Mon, 16 Jul 2007 18:18:19 +0000 (18:18 +0000)
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: https://origsvn.digium.com/svn/asterisk/trunk@75254 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_dial.c

index 4438daa8a3613e903af20e54686365bccfad43eb..74546d8e1eedc9d27625d367836135c74fb43517 100644 (file)
@@ -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);
                                }
                        }