From 554baa54f6da1b7eb24aa9c0704c37184d72cc22 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Mon, 27 Dec 2021 13:35:30 -0800 Subject: [PATCH] Avoid locking while waiting for receiver read (#288) A deadlock was observed in this section, when Read was waiting for data. --- pkg/sfu/receiver.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/sfu/receiver.go b/pkg/sfu/receiver.go index 8a5ff59c6..fb97717c6 100644 --- a/pkg/sfu/receiver.go +++ b/pkg/sfu/receiver.go @@ -433,8 +433,9 @@ func (w *WebRTCReceiver) forwardRTP(layer int32) { for { w.bufferMu.RLock() - pkt, err := w.buffers[layer].ReadExtended() + buf := w.buffers[layer] w.bufferMu.RUnlock() + pkt, err := buf.ReadExtended() if err == io.EOF { return }