diff --git a/main/rtp.c b/main/rtp.c index 1370e12d28ea94dda0c0fe3bbdc54885ab205772..bc3db9b4b6a041fc0b1511492922cb097c21b1cc 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1479,10 +1479,6 @@ static int bridge_p2p_rtp_write(struct ast_rtp *rtp, struct ast_rtp *bridged, un /* Check what the payload value should be */ rtpPT = ast_rtp_lookup_pt(rtp, payload); - /* If the payload coming in is not one of the negotiated ones then send it to the core, this will cause formats to change and the bridge to break */ - if (!bridged->current_RTP_PT[payload].code) - return -1; - /* If the payload is DTMF, and we are listening for DTMF - then feed it into the core */ if (ast_test_flag(rtp, FLAG_P2P_NEED_DTMF) && !rtpPT.isAstFormat && rtpPT.code == AST_RTP_DTMF) return -1; @@ -1490,6 +1486,11 @@ static int bridge_p2p_rtp_write(struct ast_rtp *rtp, struct ast_rtp *bridged, un /* Otherwise adjust bridged payload to match */ bridged_payload = ast_rtp_lookup_code(bridged, rtpPT.isAstFormat, rtpPT.code); + /* If the payload coming in is not one of the negotiated ones then send it to the core, this will cause formats to change and the bridge to break */ + if (!bridged->current_RTP_PT[bridged_payload].code) + return -1; + + /* If the mark bit has not been sent yet... do it now */ if (!ast_test_flag(rtp, FLAG_P2P_SENT_MARK)) { mark = 1;