From 306451f94f48a03d9922861bed8915eba97201ed Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Wed, 28 Jun 2023 20:25:40 +0300 Subject: [PATCH] Fix race on pcm pack backchannel #432 --- pkg/pcm/helpers.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/pcm/helpers.go b/pkg/pcm/helpers.go index d873f7e3..f2e723d5 100644 --- a/pkg/pcm/helpers.go +++ b/pkg/pcm/helpers.go @@ -3,15 +3,22 @@ package pcm import ( "github.com/AlexxIT/go2rtc/pkg/core" "github.com/pion/rtp" + "sync" ) func RepackBackchannel(handler core.HandlerFunc) core.HandlerFunc { var buf []byte var seq uint16 + // fix https://github.com/AlexxIT/go2rtc/issues/432 + var mu sync.Mutex + return func(packet *rtp.Packet) { + mu.Lock() + buf = append(buf, packet.Payload...) if len(buf) < 1024 { + mu.Unlock() return } @@ -27,9 +34,11 @@ func RepackBackchannel(handler core.HandlerFunc) core.HandlerFunc { Payload: buf[:1024], } - handler(pkt) - buf = buf[1024:] seq++ + + mu.Unlock() + + handler(pkt) } }