From 1cc99ba8b641e346dce2e3567db580adc9809eeb Mon Sep 17 00:00:00 2001
From: Joshua Colp <jcolp@digium.com>
Date: Wed, 22 Jul 2015 14:24:47 -0300
Subject: [PATCH] audiohook: Use manipulated frame instead of dropping it.

Previous changes to sample rate support in audiohooks accidentally
removed code responsible for allowing the manipulate audiohooks
to work. Without this code the manipulated frame would be dropped
and not used. This change restores it.

ASTERISK-25253 #close

Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13
---
 main/audiohook.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/main/audiohook.c b/main/audiohook.c
index 3e233fa2a1..71b357494b 100644
--- a/main/audiohook.c
+++ b/main/audiohook.c
@@ -1009,13 +1009,16 @@ static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, st
 			audiohook_list_set_hook_rate(audiohook_list, audiohook, &internal_sample_rate);
 			/*
 			 * Feed in frame to manipulation.
-			 *
-			 * XXX FAILURES ARE IGNORED XXX
-			 * If the manipulation fails then the frame will be returned in its original state.
-			 * Since there are potentially more manipulator callbacks in the list, no action should
-			 * be taken here to exit early.
 			 */
-			audiohook->manipulate_callback(audiohook, chan, middle_frame, direction);
+			if (!audiohook->manipulate_callback(audiohook, chan, middle_frame, direction)) {
+				/*
+				 * XXX FAILURES ARE IGNORED XXX
+				 * If the manipulation fails then the frame will be returned in its original state.
+				 * Since there are potentially more manipulator callbacks in the list, no action should
+				 * be taken here to exit early.
+				 */
+				middle_frame_manipulated = 1;
+			}
 			ast_audiohook_unlock(audiohook);
 		}
 		AST_LIST_TRAVERSE_SAFE_END;
-- 
GitLab