fix(imagorvideo): close reader on ReadSeeker size 0
This commit is contained in:
parent
65aaf7d702
commit
17b9baa5d6
1 changed files with 29 additions and 24 deletions
53
processor.go
53
processor.go
|
|
@ -94,30 +94,35 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if reader == nil {
|
if reader == nil {
|
||||||
if reader, size, err = in.NewReadSeeker(); err != nil || size <= 0 {
|
reader, size, err = in.NewReadSeeker()
|
||||||
// write to temp file if read seeker not available
|
if err == nil && size <= 0 {
|
||||||
if reader, _, err = in.NewReader(); err != nil {
|
_ = reader.Close()
|
||||||
return
|
reader = nil
|
||||||
}
|
}
|
||||||
var file *os.File
|
}
|
||||||
if file, err = os.CreateTemp("", "imagor-"); err != nil {
|
if reader == nil {
|
||||||
return
|
// write to temp file if read seeker not available
|
||||||
}
|
if reader, _, err = in.NewReader(); err != nil {
|
||||||
var filename = file.Name()
|
return
|
||||||
defer func() {
|
}
|
||||||
_ = os.Remove(filename)
|
var file *os.File
|
||||||
p.Logger.Debug("cleanup", zap.String("file", filename))
|
if file, err = os.CreateTemp("", "imagor-"); err != nil {
|
||||||
}()
|
return
|
||||||
if size, err = io.Copy(file, reader); err != nil {
|
}
|
||||||
return
|
var filename = file.Name()
|
||||||
}
|
defer func() {
|
||||||
p.Logger.Debug("temp",
|
_ = os.Remove(filename)
|
||||||
zap.String("file", filename),
|
p.Logger.Debug("cleanup", zap.String("file", filename))
|
||||||
zap.Int64("size", size))
|
}()
|
||||||
_ = file.Close()
|
if size, err = io.Copy(file, reader); err != nil {
|
||||||
if reader, err = os.Open(filename); err != nil {
|
return
|
||||||
return
|
}
|
||||||
}
|
p.Logger.Debug("temp",
|
||||||
|
zap.String("file", filename),
|
||||||
|
zap.Int64("size", size))
|
||||||
|
_ = file.Close()
|
||||||
|
if reader, err = os.Open(filename); err != nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
av, err := ffmpeg.LoadAVContext(ctx, reader, size)
|
av, err := ffmpeg.LoadAVContext(ctx, reader, size)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue