about summary refs log tree commit diff
path: root/lib/paperclip
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-11-16 21:36:28 +0100
committerGitHub <noreply@github.com>2021-11-16 21:36:28 +0100
commit48f8658d34f453f9e5687835e384e2ddeb81b509 (patch)
tree514251babae2e1d9afe94fe784bff5d32c989498 /lib/paperclip
parent3517867b7656ff506a04e394fc8c1a855b7d504a (diff)
Fix upload of remote media with OpenStack Swift sometimes failing (#16998)
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.
Diffstat (limited to 'lib/paperclip')
-rw-r--r--lib/paperclip/response_with_limit_adapter.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/paperclip/response_with_limit_adapter.rb b/lib/paperclip/response_with_limit_adapter.rb
index 17a2abd25..deb89717a 100644
--- a/lib/paperclip/response_with_limit_adapter.rb
+++ b/lib/paperclip/response_with_limit_adapter.rb
@@ -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)