about summary refs log tree commit diff
path: root/app/lib/request.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-01-13 12:26:34 +0100
committerGitHub <noreply@github.com>2023-01-13 12:26:34 +0100
commitafd0d424da4928b9e20a3c7a943f970252ed3a29 (patch)
tree98641aa5df145b1a025ff29940c2d8814f6b7b2f /app/lib/request.rb
parent932a22219ae99a285bdd0b69f02627f029327db3 (diff)
parentb52dc5f69d27ce2fcc84b3929840f2d8704ae48a (diff)
Merge pull request #2080 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/lib/request.rb')
-rw-r--r--app/lib/request.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/app/lib/request.rb b/app/lib/request.rb
index b2819c8ed..0508169dc 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -154,9 +154,7 @@ class Request
   end
 
   module ClientLimit
-    def body_with_limit(limit = 1.megabyte)
-      raise Mastodon::LengthValidationError if content_length.present? && content_length > limit
-
+    def truncated_body(limit = 1.megabyte)
       if charset.nil?
         encoding = Encoding::BINARY
       else
@@ -173,11 +171,19 @@ class Request
         contents << chunk
         chunk.clear
 
-        raise Mastodon::LengthValidationError if contents.bytesize > limit
+        break if contents.bytesize > limit
       end
 
       contents
     end
+
+    def body_with_limit(limit = 1.megabyte)
+      raise Mastodon::LengthValidationError if content_length.present? && content_length > limit
+
+      contents = truncated_body(limit)
+      raise Mastodon::LengthValidationError if contents.bytesize > limit
+      contents
+    end
   end
 
   if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production?