W3C home > Mailing lists > Public > ietf-http-wg-old@w3.org > May to August 1997

Re: Proposal: 100-Continue optional under Client control

From: Jeffrey Mogul <mogul@pa.dec.com>
Date: Wed, 02 Jul 97 12:28:21 MDT
Message-Id: <9707021928.AA15628@acetes.pa.dec.com>
To: "David W. Morris" <dwm@xpasc.com>
Cc: http-wg@cuckoo.hpl.hp.com
Re:

    The Expected request-header field is used to indicate that
    particular conditional behaviors are required by the client.
    An origin server which does not understand or is unable to
    comply with an Expected field value stipulation MUST
    respond with appropriate error status.

      Expected              =  "Expected" ":" 1#expected-stipulation

      expected-stipulation  =  "100-continue" | extension-stipulation
      extension-stipulation =  token [ "=" ( token | quoted-string )
                                       *stip-params ]
      stip-params           =  ";" token [ = ( token | quoted-string ) ]

    When the 100-continue stipulation is present on a request which
    includes a body, the requesting client is waiting after sending
    the request headers prior to sending the content-body. Thus, the
    server MUST conform to the requirements of section 8.2 and
    either send 100 (Continue) status or error status after receiving
    the "Expected: 100-continue" request header.

    This header field is defined with extensible syntax to allow for
    future extensions.

Many people are confused about the meaning of the word "stipulate".
Your use does conform to what my dictionary says, but perhaps it
would be clearer to use the term "expectation"?  I.e., rewrite
that passage to be:

    The Expected request-header field is used to indicate that
    particular server behaviors are required by the client.  A
    server that does not understand or is unable to comply with any of
    the expectation values in the Expected field of a request MUST
    respond with appropriate error status.

      Expected              =  "Expected" ":" 1#expectation

      expectation  =  "100-continue" | expectation-extension
      expectation-extension =  token [ "=" ( token | quoted-string )
                                       *expect-params ]
      expect-params           =  ";" token [ = ( token | quoted-string ) ]

    The server SHOULD respond with a 412 (Precondition Failed) status
    if any of the expectations cannot be met.

    When the "100-continue" expectation is present on a request that
    includes a body, the requesting client will wait after sending the
    request headers before sending the content-body.  In this case, the
    server MUST conform to the requirements of section 8.2: it MUST
    either send a 100 (Continue) status, or an error status, after
    receiving the "Expected: 100-continue" request header.

    This header field is defined with extensible syntax to allow for
    future extensions.  If a server receives a request containing
    an Expected field that includes an expectation-extension that
    it does not support, it MUST respond with a 412 (Precondition
    Failed) status.
    
I also did some more massaging on the text, including
	(1) changed some "which"s to "that"s (see Strunk & White).
	(2) made it clear that if the request depends on multiple
	expectations, they all must be satisfied.
	(3) deleted "origin", as per Koen's message
	(4) made specific reference to the 412 status code,
	already defined for this purpose.
	(5) made it clear what a server must do if this mechanism
	is extended.
In some of these cases, I just had to guess what you intended
(because it wasn't unambiguous).

-Jeff
Received on Wednesday, 2 July 1997 12:38:18 EDT

This archive was generated by hypermail pre-2.1.9 : Wednesday, 24 September 2003 06:32:45 EDT