added extra panic-recover handling for CreateThumb
This commit is contained in:
@@ -23,6 +23,7 @@ import (
|
|||||||
"github.com/pocketbase/pocketbase/tools/filesystem/internal/s3blob"
|
"github.com/pocketbase/pocketbase/tools/filesystem/internal/s3blob"
|
||||||
"github.com/pocketbase/pocketbase/tools/filesystem/internal/s3blob/s3"
|
"github.com/pocketbase/pocketbase/tools/filesystem/internal/s3blob/s3"
|
||||||
"github.com/pocketbase/pocketbase/tools/list"
|
"github.com/pocketbase/pocketbase/tools/list"
|
||||||
|
"github.com/pocketbase/pocketbase/tools/routine"
|
||||||
|
|
||||||
// explicit webp decoder because disintegration/imaging does not support webp
|
// explicit webp decoder because disintegration/imaging does not support webp
|
||||||
_ "golang.org/x/image/webp"
|
_ "golang.org/x/image/webp"
|
||||||
@@ -497,6 +498,14 @@ var ThumbSizeRegex = regexp.MustCompile(`^(\d+)x(\d+)(t|b|f)?$`)
|
|||||||
// - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom)
|
// - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom)
|
||||||
// - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping)
|
// - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping)
|
||||||
func (s *System) CreateThumb(originalKey string, thumbKey, thumbSize string) error {
|
func (s *System) CreateThumb(originalKey string, thumbKey, thumbSize string) error {
|
||||||
|
// note: the wrapping is an extra precaution since there were several
|
||||||
|
// golang.org/x/image panic related issues over the years
|
||||||
|
return routine.SafeWrap(func() error {
|
||||||
|
return s.createThumb(originalKey, thumbKey, thumbSize)
|
||||||
|
})()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *System) createThumb(originalKey string, thumbKey, thumbSize string) error {
|
||||||
sizeParts := ThumbSizeRegex.FindStringSubmatch(thumbSize)
|
sizeParts := ThumbSizeRegex.FindStringSubmatch(thumbSize)
|
||||||
if len(sizeParts) != 4 {
|
if len(sizeParts) != 4 {
|
||||||
return errors.New("thumb size must be in WxH, WxHt, WxHb or WxHf format")
|
return errors.New("thumb size must be in WxH, WxHt, WxHb or WxHf format")
|
||||||
|
|||||||
Reference in New Issue
Block a user