From 0e46733e36ad6c1708c8dedbc649aadcedac5746 Mon Sep 17 00:00:00 2001 From: boks1971 Date: Fri, 15 Aug 2025 11:52:25 +0530 Subject: [PATCH] fixes --- pkg/rtc/participant.go | 1 - pkg/rtc/transport.go | 18 ++++++++++++++---- pkg/rtc/transportmanager.go | 30 ++++++++++++++---------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 45b7de0e8..1183c56e4 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -1327,7 +1327,6 @@ func (p *ParticipantImpl) AddTrack(req *livekit.AddTrackRequest) { p.sendTrackPublished(req.Cid, ti) - // SINGLE-PEER-CONNECTION-TODO: is this needed? p.handlePendingRemoteTracks() } diff --git a/pkg/rtc/transport.go b/pkg/rtc/transport.go index 570dca384..ae57f3250 100644 --- a/pkg/rtc/transport.go +++ b/pkg/rtc/transport.go @@ -1009,12 +1009,22 @@ func (t *PCTransport) RemoveTrack(sender *webrtc.RTPSender) error { return t.pc.RemoveTrack(sender) } -func (t *PCTransport) CurrentLocalDescription() *webrtc.SessionDescription { - return t.pc.CurrentLocalDescription() +func (t *PCTransport) CurrentLocalDescription() webrtc.SessionDescription { + cld := t.pc.CurrentLocalDescription() + if cld == nil { + return webrtc.SessionDescription{} + } + + return *cld } -func (t *PCTransport) CurrentRemoteDescription() *webrtc.SessionDescription { - return t.pc.CurrentRemoteDescription() +func (t *PCTransport) CurrentRemoteDescription() webrtc.SessionDescription { + crd := t.pc.CurrentRemoteDescription() + if crd == nil { + return webrtc.SessionDescription{} + } + + return *crd } func (t *PCTransport) GetMid(rtpReceiver *webrtc.RTPReceiver) string { diff --git a/pkg/rtc/transportmanager.go b/pkg/rtc/transportmanager.go index fce86c0bd..c17ab3c4d 100644 --- a/pkg/rtc/transportmanager.go +++ b/pkg/rtc/transportmanager.go @@ -411,27 +411,25 @@ func (t *TransportManager) createDataChannelsForSubscriber(pendingDataChannels [ func (t *TransportManager) GetUnmatchMediaForOffer(parsedOffer *sdp.SessionDescription, mediaType string) (unmatched []*sdp.MediaDescription, err error) { var lastMatchedMid string - var lastAnswer *webrtc.SessionDescription + var lastAnswer webrtc.SessionDescription if t.params.SinglePeerConnection { lastAnswer = t.subscriber.CurrentLocalDescription() } else { lastAnswer = t.publisher.CurrentLocalDescription() } - if lastAnswer != nil { - t.params.Logger.Infow("RAJA lastAnswer", "lastAnswer", lastAnswer) // REMOVE - parsedAnswer, err1 := lastAnswer.Unmarshal() - if err1 != nil { - // should not happen - t.params.Logger.Errorw("failed to parse last answer", err1) - return unmatched, err1 - } - for i := len(parsedAnswer.MediaDescriptions) - 1; i >= 0; i-- { - media := parsedAnswer.MediaDescriptions[i] - if media.MediaName.Media == mediaType { - lastMatchedMid, _ = media.Attribute(sdp.AttrKeyMID) - break - } + parsedAnswer, err1 := lastAnswer.Unmarshal() + if err1 != nil { + // should not happen + t.params.Logger.Errorw("failed to parse last answer", err1) + return unmatched, err1 + } + + for i := len(parsedAnswer.MediaDescriptions) - 1; i >= 0; i-- { + media := parsedAnswer.MediaDescriptions[i] + if media.MediaName.Media == mediaType { + lastMatchedMid, _ = media.Attribute(sdp.AttrKeyMID) + break } } @@ -449,7 +447,7 @@ func (t *TransportManager) GetUnmatchMediaForOffer(parsedOffer *sdp.SessionDescr return } -func (t *TransportManager) LastPublisherOffer() *webrtc.SessionDescription { +func (t *TransportManager) LastPublisherOffer() webrtc.SessionDescription { /* RAJA-REMOVE if sd := t.lastPublisherOffer.Load(); sd != nil { return sd.(webrtc.SessionDescription)