#462 new defect

PUT should elicit 100 Continue

Reported by: adi Owned by:
Priority: major Milestone: soon
Component: code-frontend-web Version: 1.1.0
Keywords: curl hang reliability http standards Cc:
Launchpad Bug:

Description

curl -T foo.txt http://tahoebs1.allmydata.com:8123/uri/URI%3ADIR2%3Adjrdkfawoqihigoett4g6auz6a%3Ajx5mplfpwexnoqff7y5e4zjus4lidm76dcuarpct7cckorh2dpgq/foo.txt should work. Currently, curl sends the PUT and the headers and then blocks waiting for the server to tell it to go ahead.

Change History (5)

comment:1 Changed at 2008-08-19T18:01:48Z by zooko

  • Component changed from unknown to code-frontend-web
  • Owner nobody deleted

comment:2 Changed at 2010-02-11T03:41:28Z by davidsarah

  • Keywords curl hang added

comment:3 Changed at 2010-02-11T03:41:55Z by davidsarah

  • Keywords reliability added

comment:4 Changed at 2011-01-13T05:43:49Z by davidsarah

  • Keywords http standards added
  • Milestone changed from undecided to 1.9.0

We are clearly non-compliant to a MUST requirement in RFC 2616 section 8.2.3:

Upon receiving a request which includes an Expect request-header
field with the "100-continue" expectation, an origin server MUST
either respond with 100 (Continue) status and continue to read
from the input stream, or respond with a final status code. The
origin server MUST NOT wait for the request body before sending
the 100 (Continue) response.

Mind you, curl is also non-compliant to a SHOULD:

Because of the presence of older implementations, the protocol allows
ambiguous situations in which a client may send "Expect: 100-
continue" without receiving either a 417 (Expectation Failed) status
or a 100 (Continue) status. Therefore, when a client sends this
header field to an origin server (possibly via a proxy) from which it
has never seen a 100 (Continue) status, the client SHOULD NOT wait
for an indefinite period before sending the request body.

comment:5 Changed at 2011-07-12T22:46:48Z by davidsarah

  • Milestone changed from 1.9.0 to soon
Note: See TracTickets for help on using tickets.