From f4432932152ae262cf7e87353c3eda12d367cf1f Mon Sep 17 00:00:00 2001 From: Travis Ralston <travpc@gmail.com> Date: Wed, 26 Jun 2019 19:07:16 -0600 Subject: [PATCH] Don't convert nil values from singleflight Fixes https://github.com/turt2live/matrix-media-repo/issues/178 --- .../download_controller/download_controller.go | 14 ++++++++++++-- .../preview_controller/preview_controller.go | 7 ++++++- .../thumbnail_controller/thumbnail_controller.go | 7 ++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/controllers/download_controller/download_controller.go b/controllers/download_controller/download_controller.go index 7dae57d7..4cf85eec 100644 --- a/controllers/download_controller/download_controller.go +++ b/controllers/download_controller/download_controller.go @@ -130,7 +130,12 @@ func GetMedia(origin string, mediaId string, downloadRemote bool, blockForMedia return vals }) - return v.(*types.MinimalMedia), err + var value *types.MinimalMedia + if v != nil { + value = v.(*types.MinimalMedia) + } + + return value, err } func FindMinimalMediaRecord(origin string, mediaId string, downloadRemote bool, ctx context.Context, log *logrus.Entry) (*types.MinimalMedia, error) { @@ -258,5 +263,10 @@ func FindMediaRecord(origin string, mediaId string, downloadRemote bool, ctx con return media, nil }) - return v.(*types.Media), err + var value *types.Media + if v != nil { + value = v.(*types.Media) + } + + return value, err } diff --git a/controllers/preview_controller/preview_controller.go b/controllers/preview_controller/preview_controller.go index 82c7b600..2c32758a 100644 --- a/controllers/preview_controller/preview_controller.go +++ b/controllers/preview_controller/preview_controller.go @@ -59,7 +59,12 @@ func GetPreview(urlStr string, onHost string, forUserId string, atTs int64, ctx return result.preview, result.err }) - return v.(*types.UrlPreview), err + var value *types.UrlPreview + if v != nil { + value = v.(*types.UrlPreview) + } + + return value, err } func cachedPreviewToReal(cached *types.CachedUrlPreview) (*types.UrlPreview, error) { diff --git a/controllers/thumbnail_controller/thumbnail_controller.go b/controllers/thumbnail_controller/thumbnail_controller.go index 3c9a3219..e91f954a 100644 --- a/controllers/thumbnail_controller/thumbnail_controller.go +++ b/controllers/thumbnail_controller/thumbnail_controller.go @@ -193,7 +193,12 @@ func GetThumbnail(origin string, mediaId string, desiredWidth int, desiredHeight return vals }) - return v.(*types.StreamedThumbnail), err + var value *types.StreamedThumbnail + if v != nil { + value = v.(*types.StreamedThumbnail) + } + + return value, err } func GetOrGenerateThumbnail(media *types.Media, width int, height int, animated bool, method string, ctx context.Context, log *logrus.Entry) (*types.Thumbnail, error) { -- GitLab