]> cat aescling's git repositories - mastodon.git/commitdiff
Fix upload of remote media with OpenStack Swift sometimes failing (#16998)
authorClaire <claire.github-309c@sitedethib.com>
Tue, 16 Nov 2021 20:36:28 +0000 (21:36 +0100)
committerGitHub <noreply@github.com>
Tue, 16 Nov 2021 20:36:28 +0000 (21:36 +0100)
Under certain conditions, files fetched from remotes trigger an error when
being uploaded using OpenStack Swift. This is because in some cases, the
remote server will not return a content-length, so our ResponseWithLimitAdapter
will hold a `nil` value for `#size`, which will lead to an invalid value
for the Content-Length header of the Swift API call.

This commit fixes that by taking the size from the actually-downloaded file
size rather than the upstream-provided Content-Length header value.

lib/paperclip/response_with_limit_adapter.rb

index 17a2abd25f2c79af2a80473bdb8a6f5a3760b61b..deb89717a405919e05f7358d14ad9b3cd7b82375 100644 (file)
@@ -17,9 +17,9 @@ module Paperclip
 
     def cache_current_values
       @original_filename = filename_from_content_disposition.presence || filename_from_path.presence || 'data'
-      @size = @target.response.content_length
       @tempfile = copy_to_tempfile(@target)
       @content_type = ContentTypeDetector.new(@tempfile.path).detect
+      @size = File.size(@tempfile)
     end
 
     def copy_to_tempfile(source)