diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index 8ede400da868fcf88b25a75eb36b2864fe73ab36..7b236becd4da2169ece2a94be86c9c4b59f4a708 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -3994,6 +3994,11 @@ static void rtp_deallocate_transport(struct ast_rtp_instance *instance, struct a
 		rtp->ice_active_remote_candidates = NULL;
 	}
 
+	if (rtp->ice_proposed_remote_candidates) {
+		ao2_ref(rtp->ice_proposed_remote_candidates, -1);
+		rtp->ice_proposed_remote_candidates = NULL;
+	}
+
 	if (rtp->ioqueue) {
 		/*
 		 * We cannot hold the instance lock because we could wait