diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index edc53f56b81648109b7a72b3a71037d7d1e1f849..a5990c60f4ae9895892c6294432fe9086b8d5a4a 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -3210,10 +3210,6 @@ static struct ast_frame *ast_rtcp_read(struct ast_rtp_instance *instance)
 	int res, packetwords, position = 0;
 	int report_counter = 0;
 	struct ast_rtp_rtcp_report_block *report_block;
-	RAII_VAR(struct ast_rtp_rtcp_report *, rtcp_report,
-			NULL,
-			ao2_cleanup);
-	RAII_VAR(struct ast_json *, message_blob, NULL, ast_json_unref);
 	struct ast_frame *f = &ast_null_frame;
 
 	/* Read in RTCP data from the socket */
@@ -3274,6 +3270,8 @@ static struct ast_frame *ast_rtcp_read(struct ast_rtp_instance *instance)
 	while (position < packetwords) {
 		int i, pt, rc;
 		unsigned int length;
+		struct ast_json *message_blob;
+		RAII_VAR(struct ast_rtp_rtcp_report *, rtcp_report, NULL, ao2_cleanup);
 
 		i = position;
 		length = ntohl(rtcpheader[i]);
@@ -3397,6 +3395,7 @@ static struct ast_frame *ast_rtcp_read(struct ast_rtp_instance *instance)
 			ast_rtp_publish_rtcp_message(instance, ast_rtp_rtcp_received_type(),
 					rtcp_report,
 					message_blob);
+			ast_json_unref(message_blob);
 			break;
 		case RTCP_PT_FUR:
 		/* Handle RTCP FIR as FUR */