Skip to content

Commit 1c1578c

Browse files
committed
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 a0b705e) (cherry picked from commit c3dd3dc) (cherry picked from commit b3f2685)
1 parent 3f89850 commit 1c1578c

File tree

3 files changed

+3
-1
lines changed

3 files changed

+3
-1
lines changed

daemon/media_socket.c

+1
Original file line numberDiff line numberDiff line change
@@ -1480,6 +1480,7 @@ static const char *kernelize_one(struct rtpengine_target_info *reti, GQueue *out
14801480

14811481
if (proto_is_rtp(media->protocol)) {
14821482
reti->rtp = 1;
1483+
reti->ssrc_req = 1;
14831484
if (!MEDIA_ISSET(media, TRANSCODING)) {
14841485
reti->rtcp_fw = 1;
14851486
if (media->protocol->avpf)

kernel-module/xt_RTPENGINE.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -6374,7 +6374,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb,
63746374
// Look for matching SSRC index if any SSRC were given
63756375
ssrc_idx = target_find_ssrc(g, rtp.rtp_header->ssrc);
63766376
errstr = "SSRC mismatch";
6377-
if (ssrc_idx == -2)
6377+
if (ssrc_idx == -2 || (ssrc_idx == -1 && g->target.ssrc_req))
63786378
goto out_error;
63796379

63806380
pkt_idx = rtp_packet_index(&g->decrypt_rtp, &g->target.decrypt, rtp.rtp_header, ssrc_idx,

kernel-module/xt_RTPENGINE.h

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ struct rtpengine_target_info {
102102
dtls:1,
103103
stun:1,
104104
rtp:1,
105+
ssrc_req:1,
105106
rtp_only:1,
106107
track_ssrc:1,
107108
rtcp:1,

0 commit comments

Comments
 (0)