From 93d090147f1616149ff1c37970660dc686ba5c58 Mon Sep 17 00:00:00 2001
From: Mark Petersen <bugs.digium.com@zombie.dk>
Date: Tue, 4 Jan 2022 10:11:41 +0100
Subject: [PATCH] app_queue.c: Queue don't play "thank-you" when here is no
 hold time announcements

if holdtime is (0 min, 0 sec) there is no hold time announcements
we should then also not playing queue-thankyou

ASTERISK-29831

Change-Id: Ic7e51dcde526b23f1cd8d24e1d1e2d81e10f9d2c
---
 apps/app_queue.c                             | 12 +++---------
 doc/CHANGES-staging/app_queue_say_thanks.txt |  4 ++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 create mode 100644 doc/CHANGES-staging/app_queue_say_thanks.txt

diff --git a/apps/app_queue.c b/apps/app_queue.c
index 95eb05b0ee..9bd05379fc 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -4124,9 +4124,8 @@ static int valid_exit(struct queue_ent *qe, char digit)
 
 static int say_position(struct queue_ent *qe, int ringing)
 {
-	int res = 0, announceposition = 0;
+	int res = 0, say_thanks = 0;
 	long avgholdmins, avgholdsecs;
-	int say_thanks = 1;
 	time_t now;
 
 	/* Let minannouncefrequency seconds pass between the start of each position announcement */
@@ -4155,11 +4154,7 @@ static int say_position(struct queue_ent *qe, int ringing)
 		qe->parent->announceposition == ANNOUNCEPOSITION_MORE_THAN ||
 		(qe->parent->announceposition == ANNOUNCEPOSITION_LIMIT &&
 		qe->pos <= qe->parent->announcepositionlimit)) {
-			announceposition = 1;
-	}
-
-
-	if (announceposition == 1) {
+		say_thanks = 1;
 		/* Say we're next, if we are */
 		if (qe->pos == 1) {
 			res = play_file(qe->chan, qe->parent->sound_next);
@@ -4203,6 +4198,7 @@ static int say_position(struct queue_ent *qe, int ringing)
 	if ((avgholdmins+avgholdsecs) > 0 && qe->parent->announceholdtime &&
 		((qe->parent->announceholdtime == ANNOUNCEHOLDTIME_ONCE && !qe->last_pos) ||
 		!(qe->parent->announceholdtime == ANNOUNCEHOLDTIME_ONCE))) {
+		say_thanks = 1;
 		res = play_file(qe->chan, qe->parent->sound_holdtime);
 		if (res) {
 			goto playout;
@@ -4237,8 +4233,6 @@ static int say_position(struct queue_ent *qe, int ringing)
 				goto playout;
 			}
 		}
-	} else if (qe->parent->announceholdtime && !qe->parent->announceposition) {
-		say_thanks = 0;
 	}
 
 posout:
diff --git a/doc/CHANGES-staging/app_queue_say_thanks.txt b/doc/CHANGES-staging/app_queue_say_thanks.txt
new file mode 100644
index 0000000000..7bf7b7b420
--- /dev/null
+++ b/doc/CHANGES-staging/app_queue_say_thanks.txt
@@ -0,0 +1,4 @@
+Subject: app_queues
+
+Don't play sound_thanks if there is no leading hold_time message
+When the only announcement is hold time, and there is no hold time (0 min, 0 sec), asterisk will say "thank you for your patience"
-- 
GitLab