From d7f928783fa3b95ab1ba977c7bb060cca0ac0b68 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Fri, 19 Sep 2025 15:14:17 +0530 Subject: [PATCH] Avoid matching on empty track id. (#3937) Due to SDP ordering, Pion did not provide track ID on a receiver. Pion needs a=msid line to be before a=ssrc line -> need to check if this is a spec requirement Because of the above, it had empty id for the receiver in onTrack. That matched a published track because we do not duplicate SdpCid in TrackInfo if the SDP cid matches the signal cid. But, the search checks both and it matched on empty SDP cid. Do not accept empty ids in searches to prevent this from happening. --- pkg/rtc/mediatrack.go | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index 08becb859..f192d18c7 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -232,30 +232,36 @@ func (t *MediaTrack) ClearSubscriberNodes() { } func (t *MediaTrack) HasSignalCid(cid string) bool { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid { - return true + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid { + return true + } } } return false } func (t *MediaTrack) HasSdpCid(cid string) bool { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid || c.SdpCid == cid { - return true + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid || c.SdpCid == cid { + return true + } } } return false } func (t *MediaTrack) GetMimeTypeForSdpCid(cid string) mime.MimeType { - ti := t.MediaTrackReceiver.TrackInfoClone() - for _, c := range ti.Codecs { - if c.Cid == cid || c.SdpCid == cid { - return mime.NormalizeMimeType(c.MimeType) + if cid != "" { + ti := t.MediaTrackReceiver.TrackInfoClone() + for _, c := range ti.Codecs { + if c.Cid == cid || c.SdpCid == cid { + return mime.NormalizeMimeType(c.MimeType) + } } } return mime.MimeTypeUnknown