From ae29d05ec92c78f63e4281e5f7cf81213f869bcb Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Thu, 10 Aug 2023 23:02:10 +0530 Subject: [PATCH] Check RTPSender is valid (#1953) On a quick Bind + Unbind, the go routine to get parameters running late could encounter a nil sender. Check for it. --- pkg/sfu/downtrack.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/sfu/downtrack.go b/pkg/sfu/downtrack.go index ff287ae20..eceb854fa 100644 --- a/pkg/sfu/downtrack.go +++ b/pkg/sfu/downtrack.go @@ -408,9 +408,11 @@ func (d *DownTrack) Bind(t webrtc.TrackLocalContext) (webrtc.RTPCodecParameters, // Bind is called under RTPSender.mu lock, call the RTPSender.GetParameters in goroutine to avoid deadlock go func() { if tr := d.transceiver.Load(); tr != nil { - extensions := tr.Sender().GetParameters().HeaderExtensions - d.params.Logger.Debugw("negotiated downtrack extensions", "extensions", extensions) - d.SetRTPHeaderExtensions(extensions) + if sender := tr.Sender(); sender != nil { + extensions := sender.GetParameters().HeaderExtensions + d.params.Logger.Debugw("negotiated downtrack extensions", "extensions", extensions) + d.SetRTPHeaderExtensions(extensions) + } } }()