]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
say: Abort play loop if caller hangs up.
authorNaveen Albert <asterisk@phreaknet.org>
Sun, 22 May 2022 01:40:16 +0000 (01:40 +0000)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Thu, 30 Jun 2022 22:09:57 +0000 (17:09 -0500)
If the caller has hung up, break out of the play loop so we don't try
to play remaining files and fail to do so.

ASTERISK-30075 #close

Change-Id: I55e85be28ee90b48c0fe4ce20ac136a7dbb49f14

main/say.c

index 8fb5e97607c6ce42ffca8c9fcb5b8c9649c1cdfc..b60d4bff3c8e973e0d982b3bba3d8700bce77f0a 100644 (file)
@@ -189,19 +189,13 @@ static int say_filenames(struct ast_channel *chan, const char *ints, const char
 
        files = ast_str_buffer(filenames);
 
-       while ((fn = strsep(&files, "&"))) {
+       while (!res && (fn = strsep(&files, "&"))) {
                res = ast_streamfile(chan, fn, lang);
                if (!res) {
-                       if ((audiofd  > -1) && (ctrlfd > -1))
+                       if ((audiofd  > -1) && (ctrlfd > -1)) {
                                res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
-                       else
+                       } else {
                                res = ast_waitstream(chan, ints);
-
-                       if (res > 0) {
-                               /* We were interrupted by a digit */
-                               ast_stopstream(chan);
-                               ast_free(filenames);
-                               return res;
                        }
                }
                ast_stopstream(chan);