Validate HTTP response length while receiving (#6891)
to_s method of HTTP::Response keeps blocking while it receives the whole content, no matter how it is big. This means it may waste time to receive unacceptably large files. It may also consume memory and disk in the process. This solves the inefficency by checking response length while receiving.
This commit is contained in:
		
							parent
							
								
									18965cb0e6
								
							
						
					
					
						commit
						40e5d2303b
					
				
					 18 changed files with 115 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -4,6 +4,7 @@ module AccountHeader
 | 
			
		|||
  extend ActiveSupport::Concern
 | 
			
		||||
 | 
			
		||||
  IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
 | 
			
		||||
  LIMIT = 2.megabytes
 | 
			
		||||
 | 
			
		||||
  class_methods do
 | 
			
		||||
    def header_styles(file)
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +20,8 @@ module AccountHeader
 | 
			
		|||
    # Header upload
 | 
			
		||||
    has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '-strip' }, processors: [:lazy_thumbnail]
 | 
			
		||||
    validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
 | 
			
		||||
    validates_attachment_size :header, less_than: 2.megabytes
 | 
			
		||||
    validates_attachment_size :header, less_than: LIMIT
 | 
			
		||||
    remotable_attachment :header, LIMIT
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def header_original_url
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue