Browse Source

MT#55283 trigger rekernel for SSRC-less streams

If a stream has been pushed to the kernel from anything other than RTP,
even though RTP is expected, we get a forwarding entries without any
SSRCs. This is valid, but once actual RTP is received, it needs to be
passed on to user space, so that SSRC contexts can be set up.

Possible fix for #1855

Change-Id: I51b82d3cf79cf66780fdde154bebe56e0f43174b
(cherry picked from commit a0b705eef9)
(cherry picked from commit c3dd3dc558)
(cherry picked from commit b3f2685845)
mr12.4.1
Richard Fuchs 1 year ago
parent
commit
1c1578c36b
3 changed files with 3 additions and 1 deletions
  1. +1
    -0
      daemon/media_socket.c
  2. +1
    -1
      kernel-module/xt_RTPENGINE.c
  3. +1
    -0
      kernel-module/xt_RTPENGINE.h

+ 1
- 0
daemon/media_socket.c View File

@ -1480,6 +1480,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 (!MEDIA_ISSET(media, TRANSCODING)) {
reti->rtcp_fw = 1;
if (media->protocol->avpf)


+ 1
- 1
kernel-module/xt_RTPENGINE.c View File

@ -6374,7 +6374,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,


+ 1
- 0
kernel-module/xt_RTPENGINE.h View File

@ -102,6 +102,7 @@ struct rtpengine_target_info {
dtls:1,
stun:1,
rtp:1,
ssrc_req:1,
rtp_only:1,
track_ssrc:1,
rtcp:1,


Loading…
Cancel
Save