From d498cccc052ba7a4b65e040b159c3d56e2434e99 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Tue, 15 Mar 2022 12:01:26 -0700 Subject: [PATCH] Fixed panics with nil stats (#517) --- pkg/sfu/buffer/buffer.go | 3 +++ pkg/sfu/downtrack.go | 3 +++ pkg/sfu/receiver.go | 3 +++ 3 files changed, 9 insertions(+) diff --git a/pkg/sfu/buffer/buffer.go b/pkg/sfu/buffer/buffer.go index 82fe85a80..16289bc01 100644 --- a/pkg/sfu/buffer/buffer.go +++ b/pkg/sfu/buffer/buffer.go @@ -677,6 +677,9 @@ func (b *Buffer) GetStats() *StreamStatsWithLayers { } stats := b.rtpStats.ToProto() + if stats == nil { + return nil + } layers := make(map[int]LayerStats) layers[0] = LayerStats{ diff --git a/pkg/sfu/downtrack.go b/pkg/sfu/downtrack.go index cb5d9bd5c..5da64d2e3 100644 --- a/pkg/sfu/downtrack.go +++ b/pkg/sfu/downtrack.go @@ -1201,6 +1201,9 @@ func (d *DownTrack) GetTrackStats() map[uint32]*buffer.StreamStatsWithLayers { streamStats := make(map[uint32]*buffer.StreamStatsWithLayers, 1) stats := d.rtpStats.ToProto() + if stats == nil { + return nil + } layers := make(map[int]buffer.LayerStats) layers[0] = buffer.LayerStats{ diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index 24081a39d..403edebb4 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -420,6 +420,9 @@ func (w *WebRTCReceiver) GetTrackStats() map[uint32]*buffer.StreamStatsWithLayer } sswl := buff.GetStats() + if sswl == nil { + continue + } // if simulcast, patch buffer stats with correct layer if w.isSimulcast {