Early return from range if request type is not GET
This commit is contained in:
parent
0543142a10
commit
476b27892e
5 changed files with 37 additions and 40 deletions
|
@ -119,9 +119,9 @@ describe Kemal::StaticFileHandler do
|
|||
match = response.headers["Content-Range"].match(/bytes (\d+)-(\d+)\/(\d+)/)
|
||||
match.should_not be nil
|
||||
if match
|
||||
start_range = match[1].to_i {0}
|
||||
end_range = match[2].to_i {0}
|
||||
range_size = match[3].to_i {0}
|
||||
start_range = match[1].to_i { 0 }
|
||||
end_range = match[2].to_i { 0 }
|
||||
range_size = match[3].to_i { 0 }
|
||||
|
||||
range_size.should eq file_size
|
||||
(end_range < file_size).should eq true
|
||||
|
|
|
@ -4,7 +4,6 @@ require "./kemal/*"
|
|||
require "./kemal/helpers/*"
|
||||
|
||||
module Kemal
|
||||
|
||||
# Overload of self.run with the default startup logging
|
||||
def self.run(port = nil)
|
||||
self.run port do
|
||||
|
@ -14,10 +13,9 @@ module Kemal
|
|||
|
||||
# Overload of self.run to allow just a block
|
||||
def self.run(&block)
|
||||
self.run nil &block
|
||||
self.run nil & block
|
||||
end
|
||||
|
||||
|
||||
# The command to run a `Kemal` application.
|
||||
# The port can be given to `#run` but is optional.
|
||||
# If not given Kemal will use `Kemal::Config#port`
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
class HTTP::Server::Response
|
||||
class Output
|
||||
def close
|
||||
|
||||
unless response.wrote_headers? && !response.headers.has_key?("Content-Range")
|
||||
response.content_length = @out_count
|
||||
end
|
||||
|
|
|
@ -56,7 +56,7 @@ module Kemal
|
|||
request_headers = context.request.headers
|
||||
filesize = File.size(file_path)
|
||||
File.open(file_path) do |file|
|
||||
if context.request.headers.has_key?("Range") && context.request.method == "GET"
|
||||
if context.request.method == "GET" && context.request.headers.has_key?("Range")
|
||||
next multipart(file, context)
|
||||
end
|
||||
if request_headers.includes_word?("Accept-Encoding", "gzip") && config.is_a?(Hash) && config["gzip"] == true && filesize > minsize && Utils.zip_types(file_path)
|
||||
|
@ -80,7 +80,7 @@ module Kemal
|
|||
end
|
||||
|
||||
def multipart(file, env)
|
||||
#See http://httpwg.org/specs/rfc7233.html
|
||||
# See http://httpwg.org/specs/rfc7233.html
|
||||
fileb = file.size
|
||||
|
||||
range = env.request.headers["Range"]
|
||||
|
|
Loading…
Reference in a new issue