From 96c2fe4fe750066340649a365d33313cc6671d81 Mon Sep 17 00:00:00 2001 From: Jaya Allamsetty Date: Tue, 7 Jan 2025 20:05:15 -0500 Subject: [PATCH] fix(JingleSession) Do not signal recvonly SSRCs generated by Firefox. Fixes a regression introduced by https://github.com/jitsi/lib-jitsi-meet/commit/a7476b126c89e1ccce9a2ed6e8e2f656d8dce978 where multiple source-adds are sent from Firefox client resulting in Jicofo force muting the sources. --- modules/sdp/SDP.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/sdp/SDP.js b/modules/sdp/SDP.js index f7cb93b932..5f889d1956 100644 --- a/modules/sdp/SDP.js +++ b/modules/sdp/SDP.js @@ -304,6 +304,13 @@ export default class SDP { this.media.forEach((mediaItem, mediaindex) => { const mid = SDPUtil.parseMID(SDPUtil.findLine(mediaItem, 'a=mid:')); const mline = SDPUtil.parseMLine(mediaItem.split('\r\n')[0]); + const isRecvOnly = SDPUtil.findLine(mediaItem, `a=${MediaDirection.RECVONLY}`); + + // Do not process recvonly m-lines. Firefox generates recvonly SSRCs for all remote sources. + if (isRecvOnly) { + return; + } + const media = { mediaindex, mediaType: mline.media, @@ -622,6 +629,7 @@ export default class SDP { let ssrc = false; const assrcline = SDPUtil.findLine(mediaItem, 'a=ssrc:'); + const isRecvOnly = SDPUtil.findLine(mediaItem, `a=${MediaDirection.RECVONLY}`); if (assrcline) { ssrc = assrcline.substring(7).split(' ')[0]; @@ -639,7 +647,7 @@ export default class SDP { continue; } - if (ssrc) { + if (ssrc && !isRecvOnly) { const description = $(content).find('description'); const ssrcMap = SDPUtil.parseSSRC(mediaItem); @@ -728,7 +736,7 @@ export default class SDP { elem.up(); }); - if (ssrc) { + if (ssrc && !isRecvOnly) { const ssrcMap = SDPUtil.parseSSRC(mediaItem); for (const [ availableSsrc, ssrcParameters ] of ssrcMap) {