|
|
|
@ -3953,14 +3953,15 @@ src_check_ok:
|
|
|
|
if (unlikely((g->target.ssrc) && (g->target.ssrc != rtp.header->ssrc)))
|
|
|
|
if (unlikely((g->target.ssrc) && (g->target.ssrc != rtp.header->ssrc)))
|
|
|
|
goto skip_error;
|
|
|
|
goto skip_error;
|
|
|
|
|
|
|
|
|
|
|
|
// if RTP, only forward packets of known/passthrough payload types
|
|
|
|
|
|
|
|
if (g->target.rtp && rtp_pt_idx < 0)
|
|
|
|
|
|
|
|
goto skip1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pkt_idx = packet_index(&g->decrypt, &g->target.decrypt, rtp.header);
|
|
|
|
pkt_idx = packet_index(&g->decrypt, &g->target.decrypt, rtp.header);
|
|
|
|
errstr = "SRTP authentication tag mismatch";
|
|
|
|
errstr = "SRTP authentication tag mismatch";
|
|
|
|
if (srtp_auth_validate(&g->decrypt, &g->target.decrypt, &rtp, &pkt_idx))
|
|
|
|
if (srtp_auth_validate(&g->decrypt, &g->target.decrypt, &rtp, &pkt_idx))
|
|
|
|
goto skip_error;
|
|
|
|
goto skip_error;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if RTP, only forward packets of known/passthrough payload types
|
|
|
|
|
|
|
|
if (g->target.rtp && rtp_pt_idx < 0)
|
|
|
|
|
|
|
|
goto skip1;
|
|
|
|
|
|
|
|
|
|
|
|
errstr = "SRTP decryption failed";
|
|
|
|
errstr = "SRTP decryption failed";
|
|
|
|
if (srtp_decrypt(&g->decrypt, &g->target.decrypt, &rtp, pkt_idx))
|
|
|
|
if (srtp_decrypt(&g->decrypt, &g->target.decrypt, &rtp, pkt_idx))
|
|
|
|
goto skip_error;
|
|
|
|
goto skip_error;
|
|
|
|
|