diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 2b0ced44a1..b507ea19f3 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -1490,6 +1490,7 @@ static const char *kernelize_one(struct rtpengine_target_info *reti, GQueue *out if (proto_is_rtp(media->protocol)) { reti->rtp = 1; + reti->ssrc_req = 1; if (!ML_ISSET(media->monologue, TRANSCODING)) { reti->rtcp_fw = 1; if (media->protocol->avpf) diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 3fb2be7a86..35fd41e204 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -5426,7 +5426,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb, // Look for matching SSRC index if any SSRC were given ssrc_idx = target_find_ssrc(g, rtp.rtp_header->ssrc); errstr = "SSRC mismatch"; - if (ssrc_idx == -2) + if (ssrc_idx == -2 || (ssrc_idx == -1 && g->target.ssrc_req)) goto out_error; pkt_idx = rtp_packet_index(&g->decrypt_rtp, &g->target.decrypt, rtp.rtp_header, ssrc_idx); diff --git a/kernel-module/xt_RTPENGINE.h b/kernel-module/xt_RTPENGINE.h index 079dc6507c..4f87494068 100644 --- a/kernel-module/xt_RTPENGINE.h +++ b/kernel-module/xt_RTPENGINE.h @@ -123,6 +123,7 @@ struct rtpengine_target_info { dtls:1, stun:1, rtp:1, + ssrc_req:1, rtp_only:1, track_ssrc:1, rtcp:1,