зеркало из https://github.com/github/ruby.git
* lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_range_header):
fix regex for range-spec. * lib/webrick/httpservlet/filehandler.rb (WEBrick::HTTPServlet::DefaultFileHandler#make_partial_content): multipart/byteranges response was broken. * lib/xmlrpc/server.rb: refine example code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
a7b6d90e48
Коммит
d85b9c8925
|
@ -72,13 +72,15 @@ module WEBrick
|
|||
def make_partial_content(req, res, filename, filesize)
|
||||
mtype = HTTPUtils::mime_type(filename, @config[:MimeTypes])
|
||||
unless ranges = HTTPUtils::parse_range_header(req['range'])
|
||||
raise BadRequest, "Unrecognized range-spec: \"#{range}\""
|
||||
raise HTTPStatus::BadRequest,
|
||||
"Unrecognized range-spec: \"#{req['range']}\""
|
||||
end
|
||||
open(filename, "rb"){|io|
|
||||
if ranges.size > 1
|
||||
time = Time.now
|
||||
boundary = "#{time.sec}_#{time.usec}_#{Process::pid}"
|
||||
body = ''
|
||||
ranges.each{|r|
|
||||
ranges.each{|range|
|
||||
first, last = prepare_range(range, filesize)
|
||||
next if first < 0
|
||||
io.pos = first
|
||||
|
@ -92,6 +94,8 @@ module WEBrick
|
|||
}
|
||||
raise HTTPStatus::RequestRangeNotSatisfiable if body.empty?
|
||||
body << "--" << boundary << "--" << CRLF
|
||||
res["content-type"] = "multipart/byteranges; boundary=#{boundary}"
|
||||
res.body = body
|
||||
elsif range = ranges[0]
|
||||
first, last = prepare_range(range, filesize)
|
||||
raise HTTPStatus::RequestRangeNotSatisfiable if first < 0
|
||||
|
|
|
@ -167,7 +167,7 @@ module WEBrick
|
|||
case range_spec
|
||||
when /^(\d+)-(\d+)/ then $1.to_i .. $2.to_i
|
||||
when /^(\d+)-/ then $1.to_i .. -1
|
||||
when /^(\d+)/ then -($1.to_i) .. -1
|
||||
when /^-(\d+)/ then -($1.to_i) .. -1
|
||||
else return nil
|
||||
end
|
||||
}
|
||||
|
|
|
@ -762,7 +762,7 @@ end
|
|||
end
|
||||
|
||||
httpserver = WEBrick::HTTPServer.new(:Port => 8080)
|
||||
httpserver.mount("RPC2", s)
|
||||
httpserver.mount("/RPC2", s)
|
||||
trap("HUP") { httpserver.shutdown } # use 1 instead of "HUP" on Windows
|
||||
httpserver.start
|
||||
== Description
|
||||
|
|
Загрузка…
Ссылка в новой задаче