From 1f8bb57c92a8499566ae2c4170833dc18341e669 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Mon, 25 Jan 2021 00:03:39 -0800 Subject: [PATCH] handle when RTCP comes in after track is closed --- pkg/rtc/mediatrack.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/rtc/mediatrack.go b/pkg/rtc/mediatrack.go index 58b86c545..2638ea050 100644 --- a/pkg/rtc/mediatrack.go +++ b/pkg/rtc/mediatrack.go @@ -1,7 +1,6 @@ package rtc import ( - "context" "io" "sync" "time" @@ -31,7 +30,6 @@ var ( // MediaTrack represents a WebRTC track that needs to be forwarded // Implements the PublishedTrack interface type MediaTrack struct { - ctx context.Context id string participantId string muted bool @@ -57,7 +55,6 @@ type MediaTrack struct { func NewMediaTrack(trackId string, pId string, rtcpCh chan []rtcp.Packet, track *webrtc.TrackRemote, receiver types.Receiver) *MediaTrack { t := &MediaTrack{ - ctx: context.Background(), id: trackId, participantId: pId, ssrc: track.SSRC(), @@ -332,6 +329,10 @@ func (t *MediaTrack) handleRTCP(dt *sfu.DownTrack, rtcpBuf []byte) { for _, pair := range p.Nacks { nackedPackets = append(nackedPackets, dt.GetNACKSeqNo(pair.PacketList())...) } + + if t.nackWorker.Stopped() { + return + } t.nackWorker.Submit(func() { pktBuf := packetFactory.Get().([]byte) for _, sn := range nackedPackets {