diff --git a/main/rtp.c b/main/rtp.c
index 244eeb11a6fd5655bed9b1bf1a7f635970860e0e..1ae1edc1baa7e5bbf1829976ed4281af30352998 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -3020,8 +3020,13 @@ static enum ast_bridge_result bridge_native_loop(struct ast_channel *c0, struct
 
 		/* Wait for frame to come in on the channels */
 		if (!(who = ast_waitfor_n(cs, 2, &timeoutms))) {
-			if (!timeoutms)
+			if (!timeoutms) {
+				if (pr0->set_rtp_peer(c0, NULL, NULL, NULL, 0, 0))
+					ast_log(LOG_WARNING, "Channel '%s' failed to break RTP bridge\n", c0->name);
+				if (pr1->set_rtp_peer(c1, NULL, NULL, NULL, 0, 0))
+					ast_log(LOG_WARNING, "Channel '%s' failed to break RTP bridge\n", c1->name);
 				return AST_BRIDGE_RETRY;
+			}
 			if (option_debug)
 				ast_log(LOG_DEBUG, "Ooh, empty read...\n");
 			if (ast_check_hangup(c0) || ast_check_hangup(c1))