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
|
@ -1,30 +1,30 @@
|
|||
require "./spec_helper"
|
||||
|
||||
describe "Run" do
|
||||
it "runs a code block after starting" do
|
||||
Kemal.config.env = "test"
|
||||
make_me_true = false
|
||||
Kemal.run do
|
||||
make_me_true = true
|
||||
Kemal.stop
|
||||
end
|
||||
make_me_true.should eq true
|
||||
end
|
||||
|
||||
it "runs without a block being specified" do
|
||||
Kemal.config.env = "test"
|
||||
Kemal.run
|
||||
Kemal.config.running.should eq true
|
||||
Kemal.stop
|
||||
end
|
||||
|
||||
it "runs with just a block" do
|
||||
Kemal.config.env = "test"
|
||||
make_me_true = false
|
||||
Kemal.run do
|
||||
make_me_true = true
|
||||
Kemal.stop
|
||||
end
|
||||
make_me_true.should eq true
|
||||
end
|
||||
end
|
||||
require "./spec_helper"
|
||||
|
||||
describe "Run" do
|
||||
it "runs a code block after starting" do
|
||||
Kemal.config.env = "test"
|
||||
make_me_true = false
|
||||
Kemal.run do
|
||||
make_me_true = true
|
||||
Kemal.stop
|
||||
end
|
||||
make_me_true.should eq true
|
||||
end
|
||||
|
||||
it "runs without a block being specified" do
|
||||
Kemal.config.env = "test"
|
||||
Kemal.run
|
||||
Kemal.config.running.should eq true
|
||||
Kemal.stop
|
||||
end
|
||||
|
||||
it "runs with just a block" do
|
||||
Kemal.config.env = "test"
|
||||
make_me_true = false
|
||||
Kemal.run do
|
||||
make_me_true = true
|
||||
Kemal.stop
|
||||
end
|
||||
make_me_true.should eq true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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,9 +13,8 @@ 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.
|
||||
|
|
|
@ -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"]
|
||||
|
@ -100,7 +100,7 @@ module Kemal
|
|||
end
|
||||
|
||||
if endb == 0
|
||||
endb = fileb
|
||||
endb = fileb
|
||||
end
|
||||
|
||||
if startb < endb && endb <= fileb
|
||||
|
|
Loading…
Reference in a new issue