Skip to content

Commit 48bae07

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)
1 parent 86cd5f2 commit 48bae07

File tree

3 files changed

+3
-1
lines changed

3 files changed

+3
-1
lines changed

daemon/media_socket.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1490,6 +1490,7 @@ static const char *kernelize_one(struct rtpengine_target_info *reti, GQueue *out
14901490

14911491
if (proto_is_rtp(media->protocol)) {
14921492
reti->rtp = 1;
1493+
reti->ssrc_req = 1;
14931494
if (!ML_ISSET(media->monologue, TRANSCODING)) {
14941495
reti->rtcp_fw = 1;
14951496
if (media->protocol->avpf)

kernel-module/xt_RTPENGINE.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5426,7 +5426,7 @@ static unsigned int rtpengine46(struct sk_buff *skb, struct sk_buff *oskb,
54265426
// Look for matching SSRC index if any SSRC were given
54275427
ssrc_idx = target_find_ssrc(g, rtp.rtp_header->ssrc);
54285428
errstr = "SSRC mismatch";
5429-
if (ssrc_idx == -2)
5429+
if (ssrc_idx == -2 || (ssrc_idx == -1 && g->target.ssrc_req))
54305430
goto out_error;
54315431

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

kernel-module/xt_RTPENGINE.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ struct rtpengine_target_info {
123123
dtls:1,
124124
stun:1,
125125
rtp:1,
126+
ssrc_req:1,
126127
rtp_only:1,
127128
track_ssrc:1,
128129
rtcp:1,

0 commit comments

Comments
 (0)