diff --git a/daemon/media_socket.c b/daemon/media_socket.c index bb67de368..3a58d85eb 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -1231,6 +1231,7 @@ static const char *kernelize_one(struct rtpengine_target_info *reti, GQueue *out if (!reti->decrypt.cipher || !reti->decrypt.hmac) return "decryption cipher or HMAC not supported by kernel module"; + reti->track_ssrc = 1; for (unsigned int u = 0; u < G_N_ELEMENTS(stream->ssrc_in); u++) { if (stream->ssrc_in[u]) reti->ssrc[u] = htonl(stream->ssrc_in[u]->parent->h.ssrc); diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 4ea418d71..d046c40fd 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -4564,7 +4564,7 @@ src_check_ok: // Pass to userspace if SSRC has changed. // Look for matching SSRC index if any SSRC were given - if (likely(g->target.ssrc[0])) { + if (likely(g->target.track_ssrc)) { errstr = "SSRC mismatch"; for (ssrc_idx = 0; ssrc_idx < RTPE_NUM_SSRC_TRACKING; ssrc_idx++) { if (g->target.ssrc[ssrc_idx] == rtp.header->ssrc) diff --git a/kernel-module/xt_RTPENGINE.h b/kernel-module/xt_RTPENGINE.h index ac65b7670..2a063505b 100644 --- a/kernel-module/xt_RTPENGINE.h +++ b/kernel-module/xt_RTPENGINE.h @@ -118,6 +118,7 @@ struct rtpengine_target_info { stun:1, rtp:1, rtp_only:1, + track_ssrc:1, do_intercept:1, pt_filter:1, non_forwarding:1, // empty src/dst addr