Project

General

Profile

Actions

Feature #855

closed

HTTP/1.1 fixes and other enhancements to webrick

Added by candlerb (Brian Candler) over 15 years ago. Updated over 6 years ago.

Status:
Closed
Target version:
[ruby-core:20474]

Description

=begin
I raised the following issues on ruby-core:

  1. When returning an open IO object (without Content-Length or chunking), Webrick fails to close the HTTP/1.1 connection, and hence the client waits forever for the end of the data.
    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18454
    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18565

  2. Webrick makes it very difficult to send a '100 continue' response when a HTTP/1.1 client requests one, and yet the RFC2616 says it must do so.
    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18459

  3. It would be convenient to be able to stream not just real IO objects, but other objects which duck-type like them (such as an open zip file entry from rubyzip)
    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18460

  4. It would be convenient to be able to provide a proc object to generate a streamed response:
    proc { |out| out << "data"; out << "more data"; etc }

  5. The default block size of 4K is too small to be efficient when serving large files. This was already fixed for 1.9 in
    http://redmine.ruby-lang.org/repositories/revision/ruby-19?rev=10167
    (default now 64K and tunable). Please consider this for 1.8, especially since a similar improvement has been backported for Net::HTTP in
    http://redmine.ruby-lang.org/repositories/revision/ruby-18?rev=12092

The attached file contains small monkey-patches to address these issues. If there is interest these could be rewritten as actual patches against webrick.
=end


Files

webrick-patches.rb (2.69 KB) webrick-patches.rb Monkey patches to webrick candlerb (Brian Candler), 12/11/2008 07:08 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0