Bug #3622: Net::HTTP does not wait to send request body with Expect: 100-continue
http://redmine.ruby-lang.org/issues/show/3622

Author: Eric Hodel
Status: Open, Priority: Normal
Category: lib, Target version: 1.9.x
ruby -v: ruby 1.9.3dev (2010-07-07 trunk 28561) [x86_64-darwin10.4.0]

HTTP/1.1 allows a client to determine if the server will accept a request body using the Expect header with a value of 100-continue.  If the server finds the request header the client sent acceptable it will return with a 100 Continue response and the client will then send the request body.

Instead of waiting for a 100 Continue response Net::HTTP immediately sends the request body and ignores any 100 Continue responses.

The current behavior defeats the purpose of the Expect: 100-continue value and the 100 Continue response code.

If I am attempting to upload a large file like a photo and to a server that requires HTTP authentication I will have to wait until the upload is complete before I can retrieve a 401 response for incorrect authentication.

I have attached a proposed patch that adds a continue timeout.  Net::HTTP will wait up to the continue timeout before sending the request body.


----------------------------------------
http://redmine.ruby-lang.org