From: Naveen Albert Date: Sun, 22 May 2022 01:40:16 +0000 (+0000) Subject: say: Abort play loop if caller hangs up. X-Git-Tag: 19.6.0-rc1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b93cf97fcf03ec564c8b3585d5a3340e0078ce2;p=thirdparty%2Fasterisk.git 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 --- diff --git a/main/say.c b/main/say.c index 8fb5e97607..b60d4bff3c 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);