From 01acb201864813c9865475f6e0c133606883a388 Mon Sep 17 00:00:00 2001 From: Adrian Shum Date: Sat, 1 Oct 2022 21:33:36 +0800 Subject: [PATCH] fix(imagorvideo): fix reader and read seeker close sequence (#12) * refactor(imagorvideo): refactor reader/read seeker flow * fix(imagorvideo): fix reader/read seeker close sequence --- processor.go | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/processor.go b/processor.go index 51ea8a3..121b58f 100644 --- a/processor.go +++ b/processor.go @@ -86,24 +86,15 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp if reader, size, err = in.NewReader(); err != nil { return } - if size <= 0 { - // force read full file if size unknown - _ = reader.Close() - reader = nil - } default: - } - if reader == nil { reader, size, err = in.NewReadSeeker() - if err == nil && size <= 0 { - _ = reader.Close() - reader = nil - } } - if reader == nil { - // write to temp file if read seeker not available - if reader, _, err = in.NewReader(); err != nil { - return + if reader == nil || size <= 0 { + // write to temp file if read seeker not available or size unknown + if reader == nil { + if reader, _, err = in.NewReader(); err != nil { + return + } } var file *os.File if file, err = os.CreateTemp("", "imagor-"); err != nil { @@ -125,6 +116,9 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp return } } + defer func() { + _ = reader.Close() + }() av, err := ffmpeg.LoadAVContext(ctx, reader, size) if err != nil { return