diff --git a/main/channel.c b/main/channel.c
index 140d8e90e3d5c2eec77bda1f4c54de6e85bb97ef..8e552876a0a0aef221f3675fa78a1f5e6550eb8c 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -5051,7 +5051,7 @@ int ast_write_stream(struct ast_channel *chan, int stream_num, struct ast_frame
 		goto done;
 	}
 
-	if (ast_channel_generatordata(chan) && (!fr->src || strcasecmp(fr->src, "ast_prod"))) {
+	if (ast_channel_generatordata(chan) && (fr->frametype != AST_FRAME_RTCP) && (!fr->src || strcasecmp(fr->src, "ast_prod"))) {
 		if (ast_test_flag(ast_channel_flags(chan), AST_FLAG_WRITE_INT)) {
 				ast_deactivate_generator(chan);
 		} else {