]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Restoring functionality from 1.2 wherein Retrydial will not exit if there is no annou...
authorMark Michelson <mmichelson@digium.com>
Mon, 16 Jul 2007 18:16:15 +0000 (18:16 +0000)
committerMark Michelson <mmichelson@digium.com>
Mon, 16 Jul 2007 18:16:15 +0000 (18:16 +0000)
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/branches/1.4@75253 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_dial.c

index b9583186902b35172896c3a4a416fec9616163fa..79bcbc97ff87b0a901eb17732be6f548f33d7294 100644 (file)
@@ -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);
                                }
                        }