From c76a107cdf694f30451e89f72876aeb6a19bd304 Mon Sep 17 00:00:00 2001 From: Naveen Albert Date: Sun, 22 May 2022 01:40:16 +0000 Subject: [PATCH] say: Abort play loop if caller hangs up. 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 | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/main/say.c b/main/say.c index 27a5eda50f..28fe944b79 100644 --- a/main/say.c +++ b/main/say.c @@ -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); -- 2.47.2