From cfc5b7d16f5fdf5c1b4d6ff13966e0af00bc46de Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Wed, 27 Nov 2024 14:29:40 +0100 Subject: [PATCH] Fix potential race condition --- ffmpeg/parse/parser.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ffmpeg/parse/parser.go b/ffmpeg/parse/parser.go index 2259159c..7344ee0c 100644 --- a/ffmpeg/parse/parser.go +++ b/ffmpeg/parse/parser.go @@ -235,6 +235,9 @@ func (p *parser) Parse(line []byte) uint64 { } if isFFmpegInputs { + p.lock.progress.Lock() + defer p.lock.progress.Unlock() + if err := p.parseFFmpegIO("input", bytes.TrimPrefix(line, []byte("ffmpeg.inputs:"))); err != nil { p.logger.WithFields(log.Fields{ "line": line, @@ -246,6 +249,9 @@ func (p *parser) Parse(line []byte) uint64 { } if isHLSStreamMap { + p.lock.progress.Lock() + defer p.lock.progress.Unlock() + if err := p.parseHLSStreamMap(bytes.TrimPrefix(line, []byte("hls.streammap:"))); err != nil { p.logger.WithFields(log.Fields{ "line": line, @@ -257,6 +263,9 @@ func (p *parser) Parse(line []byte) uint64 { } if isFFmpegOutputs { + p.lock.progress.Lock() + defer p.lock.progress.Unlock() + if err := p.parseFFmpegIO("output", bytes.TrimPrefix(line, []byte("ffmpeg.outputs:"))); err != nil { p.logger.WithFields(log.Fields{ "line": line, @@ -287,6 +296,9 @@ func (p *parser) Parse(line []byte) uint64 { } if isFFmpegMapping { + p.lock.progress.Lock() + defer p.lock.progress.Unlock() + if err := p.parseFFmpegMapping(bytes.TrimPrefix(line, []byte("ffmpeg.mapping:"))); err != nil { p.logger.WithFields(log.Fields{ "line": line,