From 184fc93c6aae64b871c40d29b61b86934ca98f31 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Wed, 9 Mar 2022 11:49:27 +0800 Subject: [PATCH] fix panic on close channel (#495) --- pkg/rtc/participant.go | 2 +- pkg/sfu/receiver.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index 8fe04d027..4dc5614dd 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -1518,7 +1518,7 @@ func (p *ParticipantImpl) hasPendingMigratedTrack() bool { } func (p *ParticipantImpl) onUpTrackManagerClose() { - close(p.rtcpCh) + p.rtcpCh <- nil } func (p *ParticipantImpl) getPendingTrack(clientId string, kind livekit.TrackType) (string, *livekit.TrackInfo) { diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index f7bca9070..78a5e98fd 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -380,7 +380,11 @@ func (w *WebRTCReceiver) sendRTCP(packets []rtcp.Packet) { return } - w.rtcpCh <- packets + select { + case w.rtcpCh <- packets: + default: + w.logger.Warnw("sendRTCP failed, rtcp channel full", nil) + } for _, p := range packets { switch pkt := p.(type) {