diff --git a/main/rtp.c b/main/rtp.c
index c48fe2caf6e29803514c4bac504843a8a90a827c..d0738e3a3b3546940ed49460134e95160db1bd0d 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -2961,9 +2961,14 @@ static enum ast_bridge_result bridge_native_loop(struct ast_channel *c0, struct
 				return AST_BRIDGE_COMPLETE;
 			}
 		} else {
-			if ((fr->frametype == AST_FRAME_DTMF) ||
+			if ((fr->frametype == AST_FRAME_DTMF_BEGIN) ||
+			    (fr->frametype == AST_FRAME_DTMF) ||
 			    (fr->frametype == AST_FRAME_VOICE) ||
-			    (fr->frametype == AST_FRAME_VIDEO)) {
+			    (fr->frametype == AST_FRAME_VIDEO) ||
+			    (fr->frametype == AST_FRAME_IMAGE) ||
+			    (fr->frametype == AST_FRAME_HTML) ||
+			    (fr->frametype == AST_FRAME_MODEM) ||
+			    (fr->frametype == AST_FRAME_TEXT)) {
 				ast_write(other, fr);
 			}
 			ast_frfree(fr);
@@ -3176,12 +3181,17 @@ static enum ast_bridge_result bridge_p2p_loop(struct ast_channel *c0, struct ast
 				break;
 			}
 		} else {
-			/* If this is a DTMF, voice, or video frame write it to the other channel */
-			if ((fr->frametype == AST_FRAME_DTMF) ||
+			if ((fr->frametype == AST_FRAME_DTMF_BEGIN) ||
+			    (fr->frametype == AST_FRAME_DTMF) ||
 			    (fr->frametype == AST_FRAME_VOICE) ||
-			    (fr->frametype == AST_FRAME_VIDEO)) {
+			    (fr->frametype == AST_FRAME_VIDEO) ||
+			    (fr->frametype == AST_FRAME_IMAGE) ||
+			    (fr->frametype == AST_FRAME_HTML) ||
+			    (fr->frametype == AST_FRAME_MODEM) ||
+			    (fr->frametype == AST_FRAME_TEXT)) {
 				ast_write(other, fr);
 			}
+
 			ast_frfree(fr);
 		}
 		/* Swap priority */