Do not kernelize rtp streams without confirmed SSRC

pull/1855/head
Dennis Yurasov 8 months ago
parent 98d6575c63
commit b04115e23b

@ -2143,7 +2143,7 @@ static void media_packet_rtp_in(struct packet_handler_ctx *phc)
const char *unkern = NULL;
if (G_LIKELY(!phc->rtcp && !rtp_payload(&phc->mp.rtp, &phc->mp.payload, &phc->s))) {
if (G_LIKELY(!phc->rtcp && (phc->mp.rtp?1:!rtp_payload(&phc->mp.rtp, &phc->mp.payload, &phc->s)))) {
unkern = __stream_ssrc_in(phc->in_srtp, phc->mp.rtp->ssrc, &phc->mp.ssrc_in,
phc->mp.media->monologue->ssrc_hash);
@ -2315,6 +2315,19 @@ static bool media_packet_address_check(struct packet_handler_ctx *phc)
"peer address confirmation purposes",
FMT_M(endpoint_print_buf(&phc->mp.fsin)));
goto out;
} else if(proto_is_rtp(phc->mp.media->protocol)) {
if(rtp_payload(&phc->mp.rtp, &phc->mp.payload, &phc->s) != 0) {
ilog(LOG_INFO | LOG_FLAG_LIMIT, "Ignoring invalid RTP packet from %s%s%s for "
"peer address confirmation purposes",
FMT_M(endpoint_print_buf(&phc->mp.fsin)));
goto out;
}
if(!phc->mp.rtp->ssrc) {
ilog(LOG_INFO | LOG_FLAG_LIMIT, "Ignoring RTP packet with zero SSRC from %s%s%s for "
"peer address confirmation purposes",
FMT_M(endpoint_print_buf(&phc->mp.fsin)));
goto out;
}
}
}

Loading…
Cancel
Save