From 65b2ddee26c65104fdb8fc649850fcbcb27df83d Mon Sep 17 00:00:00 2001
From: Sean Bright <sean.bright@gmail.com>
Date: Wed, 12 Jan 2022 14:20:34 -0500
Subject: [PATCH] say.c: Prevent erroneous failures with 'say' family of
 functions.

A regression was introduced in ASTERISK~29531 that caused 'say'
functions to fail with file lists that would previously have
succeeded. This caused affected channels to hang up where previously
they would have continued.

We now explicitly check for the empty string to restore the previous
behavior.

ASTERISK-29859 #close

Change-Id: Ia2e5769868e2792313c2d7c07996efe009c6f8d5
---
 main/say.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/main/say.c b/main/say.c
index ebbb9f0f1a..df9462aa16 100644
--- a/main/say.c
+++ b/main/say.c
@@ -180,6 +180,13 @@ static int say_filenames(struct ast_channel *chan, const char *ints, const char
 	if (!filenames) {
 		return -1;
 	}
+
+	/* No filenames to play? Return success so we don't hang up erroneously */
+	if (ast_str_strlen(filenames) == 0) {
+		ast_free(filenames);
+		return 0;
+	}
+
 	files = ast_str_buffer(filenames);
 
 	while ((fn = strsep(&files, "&"))) {
-- 
GitLab