diff --git a/main/audiohook.c b/main/audiohook.c
index 3e233fa2a10e118a239bbe7460b4f6a9a1ed4bc3..71b357494bf87651afaebb97d21d216340d42177 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;