diff options
| author | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-08-13 04:11:30 +0000 |
|---|---|---|
| committer | gotoyuzo <gotoyuzo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-08-13 04:11:30 +0000 |
| commit | 1de2fcf778cd8869ce241d72440f23a5d5b5bcdf (patch) | |
| tree | 3d6c564fe9fee21136eddfd4a261fc1543eff774 /lib/webrick/httpservlet | |
| parent | 0b17e633cc2697b4d46c4355ed8fe11c3304f11b (diff) | |
| download | ruby-1de2fcf778cd8869ce241d72440f23a5d5b5bcdf.tar.gz ruby-1de2fcf778cd8869ce241d72440f23a5d5b5bcdf.tar.xz ruby-1de2fcf778cd8869ce241d72440f23a5d5b5bcdf.zip | |
* 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: http://svn.ruby-lang.org/repos/ruby/trunk@6761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/webrick/httpservlet')
| -rw-r--r-- | lib/webrick/httpservlet/filehandler.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/webrick/httpservlet/filehandler.rb b/lib/webrick/httpservlet/filehandler.rb index 9e1a439b1..8525d7bb1 100644 --- a/lib/webrick/httpservlet/filehandler.rb +++ b/lib/webrick/httpservlet/filehandler.rb @@ -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 |
