diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index f841816dfcfc545cec73b2023180f920caa0e0bd..072b41f43c7f8da4c0fb76136a8742bd58d2014a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -16130,7 +16130,7 @@ static enum ast_rtp_get_result sip_get_vrtp_peer(struct ast_channel *chan, struc
 		return AST_RTP_GET_FAILED;
 
 	ast_mutex_lock(&p->lock);
-	if (!(p->rtp)) {
+	if (!(p->vrtp)) {
 		ast_mutex_unlock(&p->lock);
 		return AST_RTP_GET_FAILED;
 	}
diff --git a/main/rtp.c b/main/rtp.c
index b62ed1480a4042034a244207b30ed8eecfa9e166..4656be908828cd5cb9f56643259e654aa8dbbd24 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -3070,7 +3070,13 @@ enum ast_bridge_result ast_rtp_bridge(struct ast_channel *c0, struct ast_channel
 	audio_p1_res = pr1->get_rtp_info(c1, &p1);
 	video_p1_res = pr1->get_vrtp_info ? pr1->get_vrtp_info(c1, &vp1) : AST_RTP_GET_FAILED;
 
-	/* Check if bridge is still possible (In SIP canreinvite=no stops this, like NAT) */
+	/* If we are carrying video, and both sides are not reinviting... then fail the native bridge */
+	if (video_p0_res != AST_RTP_GET_FAILED && (audio_p0_res != AST_RTP_TRY_NATIVE || video_p0_res != AST_RTP_TRY_NATIVE))
+		audio_p0_res = AST_RTP_GET_FAILED;
+	if (video_p1_res != AST_RTP_GET_FAILED && (audio_p1_res != AST_RTP_TRY_NATIVE || video_p1_res != AST_RTP_TRY_NATIVE))
+		audio_p1_res = AST_RTP_GET_FAILED;
+
+	/* Check if a bridge is possible (partial/native) */
 	if (audio_p0_res == AST_RTP_GET_FAILED || audio_p1_res == AST_RTP_GET_FAILED) {
 		/* Somebody doesn't want to play... */
 		ast_channel_unlock(c0);