From d0644faa5abbe10c892aade339fc694d0c492c34 Mon Sep 17 00:00:00 2001
From: Sean Bright <sean.bright@gmail.com>
Date: Fri, 18 Sep 2020 16:02:27 -0400
Subject: [PATCH] res_musiconhold: Start playlist after initial announcement

Only track our sample offset if we are playing a non-announcement file,
otherwise we will skip that number of samples when we start playing the
first MoH file.

ASTERISK-24329 #close

Change-Id: Ib6b3c84fcaa1063889ab38ba7e7fc50050a3ccfc
---
 res/res_musiconhold.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index 3749d7b98c..46bc4b905d 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -477,7 +477,12 @@ static int moh_files_generator(struct ast_channel *chan, void *data, int len, in
 			return -1;
 		}
 
-		state->samples += f->samples;
+		/* Only track our offset within the current file if we are not in the
+		 * the middle of an announcement */
+		if (!state->announcement) {
+			state->samples += f->samples;
+		}
+
 		state->sample_queue -= f->samples;
 		if (ast_format_cmp(f->subclass.format, state->mohwfmt) == AST_FORMAT_CMP_NOT_EQUAL) {
 			ao2_replace(state->mohwfmt, f->subclass.format);
-- 
GitLab