Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix)
 with ESMTP id 1D6EF21E804D for
 <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>;
 Tue, 28 May 2013 18:53:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.598
X-Spam-Level: 
X-Spam-Status: No, score=-10.598 tagged_above=-999 required=5
 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com
 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WyEprH8RFRJi for
 <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>;
 Tue, 28 May 2013 18:53:08 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com
 (Postfix) with ESMTP id F0D4821E804B for
 <httpbisa-archive-bis2Juki@lists.ietf.org>;
 Tue, 28 May 2013 18:53:05 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from
 <ietf-http-wg-request@listhub.w3.org>) id 1UhVYl-0002z8-3E for
 ietf-http-wg-dist@listhub.w3.org; Wed, 29 May 2013 01:52:15 +0000
Resent-Date: Wed, 29 May 2013 01:52:15 +0000
Resent-Message-Id: <E1UhVYl-0002z8-3E@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim
 4.72) (envelope-from <poccil14@gmail.com>) id 1UhVYZ-0002y9-5h for
 ietf-http-wg@listhub.w3.org; Wed, 29 May 2013 01:52:03 +0000
Received: from mail-vb0-f46.google.com ([209.85.212.46]) by maggie.w3.org with
 esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from
 <poccil14@gmail.com>) id 1UhVYT-0001yT-SN for ietf-http-wg@w3.org;
 Wed, 29 May 2013 01:52:03 +0000
Received: by mail-vb0-f46.google.com with SMTP id 11so5899695vbe.33 for
 <ietf-http-wg@w3.org>; Tue, 28 May 2013 18:51:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=message-id:from:to:cc:references:in-reply-to:subject:date
 :mime-version:content-type:x-priority:x-msmail-priority:importance
 :x-mailer:x-mimeole; bh=lCJxMWJUVwHGFyDddT9sJDZmLisPJFVe5yw/9R5WhbA=;
 b=cY1oR+CNu1ASgK8eiMLwWuQRoFmOE1HQUqCBxZDSHe9LVrAV82bRCVpiRikV2IJLzL
 7rjo/bKkltKDv/1Ts85hOMLVaV99qcyfn0BWjZ7wKoXa7QaUf9cV/9ux3oSHbaUX+3Kz
 /D3ylHW9PdK97ThlcvBXO/vM+GsNev1drOlw/W1/+XaQK7EamHUBIsEANaDr+Jy123lm
 6aAeTRihIzBRTy3ixhW3qfFKeA8TfRwKiQGZ6sNLjZI6E+pbaIYOQj7zcx7oamP8rWzI
 lGxaI9gmfg+o4OF4RmpYyWfjf76Ek1IV1wm9i8ONYjiSqMv7pw1ZI580th0owmhfhNBC fu+g==
X-Received: by 10.52.68.205 with SMTP id y13mr259122vdt.33.1369792292089;
 Tue, 28 May 2013 18:51:32 -0700 (PDT)
Received: from PeterPC (c-76-119-210-197.hsd1.ma.comcast.net.
 [76.119.210.197]) by mx.google.com with ESMTPSA id
 sr7sm20741517vdc.2.2013.05.28.18.51.30 for <multiple recipients>
 (version=TLSv1 cipher=RC4-SHA bits=128/128);
 Tue, 28 May 2013 18:51:31 -0700 (PDT)
Message-ID: <C0105E9E3DEE4E28810CC5E095C58FCA@PeterPC>
From: "Peter Occil" <poccil14@gmail.com>
To: "Zhong Yu" <zhong.j.yu@gmail.com>, "Mark Nottingham" <mnot@mnot.net>
Cc: "Willy Tarreau" <w@1wt.eu>, "Ken Murchison" <murch@andrew.cmu.edu>,
 "HTTP Working Group" <ietf-http-wg@w3.org>
References: <CACuKZqGmrDiNQvG0SVw=XXcy_n-BBxK-pnp+ar7uAbnwkumRag@mail.gmail.com><51780FBA.3080706@andrew.cmu.edu><20130424170638.GD19750@1wt.eu><1CD0C86A-CFBF-4DF6-A688-9E4EF549190E@mnot.net><CACuKZqGwm+aH+jRSNmKsfdDwe3eCVhmtr=u0rbUFC2+G99T5VQ@mail.gmail.com><9C460363-84A8-459E-A9F1-B6A1219F31D7@mnot.net>
 <CACuKZqEfKFhCyDqeq_HpMfoG==jcx7xGifd=+qbUqErTZvBLjQ@mail.gmail.com>
In-Reply-To: <CACuKZqEfKFhCyDqeq_HpMfoG==jcx7xGifd=+qbUqErTZvBLjQ@mail.gmail.com>
Date: Tue, 28 May 2013 21:51:23 -0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_0036_01CE5BED.7F285710"
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 15.4.3555.308
X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
Received-SPF: pass client-ip=209.85.212.46; envelope-from=poccil14@gmail.com;
 helo=mail-vb0-f46.google.com
X-W3C-Hub-Spam-Status: No, score=-3.0
X-W3C-Hub-Spam-Report: AWL=-2.434, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,
 HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1UhVYT-0001yT-SN cc0267aa8d41b5c06a90069912300614
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Expect: 100-continue and "final" status codes
Archived-At: <http://www.w3.org/mid/C0105E9E3DEE4E28810CC5E095C58FCA@PeterPC>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18138
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

This is a multi-part message in MIME format.

------=_NextPart_000_0036_01CE5BED.7F285710
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable


To make it a bit clearer, change the proposed text =93the client will =
wait before some (possibly unbounded) period of time before sending =
it=94 to =93the client will wait before some (possibly unbounded) period =
of time sending the payload body=94.

--Peter

From: Zhong Yu=20
Sent: Tuesday, May 28, 2013 11:57 AM
To: Mark Nottingham=20
Cc: Willy Tarreau ; Ken Murchison ; HTTP Working Group=20
Subject: Re: #467: Expect: 100-continue and "final" status codes

Sounds good.=20


I wonder whether this mutual distrust between the client and the server =
is still valid today. RFC 2616 wrote in 1999 that some servers did not =
understand 100-continue. Is that still the case? I suspect that most =
deployed servers today do support 100-continue properly.


Zhong Yu





On Tue, May 28, 2013 at 1:03 AM, Mark Nottingham <mnot@mnot.net> wrote:


  On 18/05/2013, at 3:45 AM, Zhong Yu <zhong.j.yu@gmail.com> wrote:

  > Hi Mark, I disagree with the change.


  OK.


  > The old text describes the intended use case - the client should =
wait for a 100 response before sending the request body. The text then =
explains the exceptional case - if the server is not known to be 1.1 =
compliant, the client should not wait forever.
  >
  > Your proposed text emphasizes the exceptional case, making the =
intended case rather hidden. I personally prefer the old text.


  I'd say that what's usable in practice is pretty far from the intent, =
and furthermore, the intent isn't terribly clear.


  > One can argue that both texts have the same implication for =
implementations, which must handle both the intended and exceptional =
cases anyway.


  Right.


  > However there is one difference, which I think is critical. =
According to the old text, if a server is 1.1 compliant, and the client =
*knows* that the server is 1.1 compliant, client should wait =
indefinitely for a response from server; it should not unilaterally =
decide to send the request body.


  Perhaps, but that's a very limited case; in practice, the only way it =
can be sure of this knowledge is if it has previously received a =
HTTP/1.1 response on the *same* connection. Since implementations often =
use a new connection for a request with a body (since they're often =
unsafe, and the connection could idle out in transit), this isn't =
terribly common, AIUI (YMMV).


  > According to the proposed text, the client must send the request =
body after very a short timeout. This is a new requirement on clients, =
which is probably not damaging, but unjustified nevertheless.


  There aren't any new requirements in there; all of this text is only =
describing semantics and giving implementation advice. What if we modify =
the text slightly, e.g.,

  """
  100-continue

  * The request includes a payload body and, after sending the request =
header section, the client will wait before some (possibly unbounded) =
period of time before sending it, to give the server an opportunity to =
reject the request with a final status code. The server can shorten the =
wait time by sending a 100 (Continue) response.
  """

  With similar modifications as appropriate elsewhere?

  Cheers,




  > On Thu, May 16, 2013 at 9:47 PM, Mark Nottingham <mnot@mnot.net> =
wrote:
  > Looking at this again, I think one of the problems is that people =
misunderstand what e/c is for.
  >
  > The current definition of 100-continue in requests doesn't help:
  >
  > > 100-continue
  > >
  > >       =95 The request includes a payload body and the client will =
wait for a 100 (Continue) response after sending the request header =
section but before sending the payload body. The 100-continue =
expectation does not use any expect-params.
  >
  >
  > =
<https://svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-httpbis/latest/p2-s=
emantics.html#header.expect>
  >
  > "will wait for" is misleading here; the client might send the body =
before getting the 100 response. This should really say something like:
  >
  > """
  > 100-continue
  >
  > * The request includes a payload body and, after sending the request =
header section, the client will wait before some period of time before =
sending it, to give the server an opportunity to reject the request with =
a final status code. The server can shorten the wait time by sending a =
100 (Continue) response.
  > """
  >
  > It then goes on:
  >
  > > The primary purpose of the 100 (Continue) status code (Section =
6.2.1) is to allow a client that is sending a request message with a =
payload to determine if the origin server is willing to accept the =
request (based on the request header fields) before the client sends the =
payload body. In some cases, it might either be inappropriate or highly =
inefficient for the client to send the payload body if the server will =
reject the message without looking at the body.
  >
  > Again, I think this is misleading. It should say something like:
  >
  > """
  > The 100-continue expectation and 100 (Continue) status code (Section =
6.2.1) are useful when a request that has a large body might be rejected =
by the server; for example, if the request requires authorization (ref =
to p7). In these situations, clients will often pause between sending =
the request headers and its body, to give the server an opportunity to =
refuse the request.
  >
  > In cases where the request is successful, this can cause a needless =
delay, as the client waits to time out (a typical period is one second). =
If the client has send the 100-continue expectation, the server can use =
the 100 (Continue) status code to indicate that the request is not going =
to be rejected, thereby avoiding the remainder of this delay period.
  >
  > Note that this mechanism does not change the request message parsing =
algorithm; in particular, whether or not a final response status code is =
sent, the client still needs to send a complete request message. As =
such, if a final status code is received, clients will often choose to =
close the connection, rather than send a complete request (e.g., if it =
is length-delimited).
  > """
  >
  > If we can agree on that, I think it'll help guide the rest of the =
discussion here and in the other E/C related issues:
  >   http://trac.tools.ietf.org/wg/httpbis/trac/ticket/458
  >   http://trac.tools.ietf.org/wg/httpbis/trac/ticket/468
  >
  > Am I on track?
  >
  > Cheers,
  >
  >
  >
  > On 25/04/2013, at 3:06 AM, Willy Tarreau <w@1wt.eu> wrote:
  >
  > > On Wed, Apr 24, 2013 at 01:00:42PM -0400, Ken Murchison wrote:
  > >>> 2. If the client receives a final status code instead of 100
  > >>> (Continue), it
  > >>> should stop sending request body if it is doing so; it must =
close the
  > >>> connection after the response is received.
  > >>
  > >> I don't understand point #2.  If the client submits a request =
with
  > >> Expect:100-continue, I would assume that the client MUST NOT send =
any
  > >> part of the body until it receives 100 (Continue) from the =
server.  If
  > >> the server rejects the request based on the headers (with 412, =
415, 417,
  > >> etc) there should be no body data in the pipe for either the =
client or
  > >> server to worry about, correct?
  > >
  > > In fact the client can decide that it's been waiting too long for =
100
  > > and decides to send anyway (because some old servers or =
intermediaries
  > > do not know about Expect and will wait).
  > >
  > > So what is generally done is that the client sends the headers, =
waits a
  > > bit then starts to send data if the server does not respond.
  > >
  > > Implementation of expect+100 seems to be a real mess at some =
places,
  > > but when it works it prove to be quite useful.
  > >
  > > Willy
  > >
  > >
  >
  > --
  > Mark Nottingham   http://www.mnot.net/
  >
  >
  >
  >
  >

  --
  Mark Nottingham   http://www.mnot.net/





------=_NextPart_000_0036_01CE5BED.7F285710
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<HTML><HEAD></HEAD>
<BODY dir=3Dltr>
<DIV dir=3Dltr>
<DIV style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>&nbsp;</DIV>
<DIV>To make it a bit clearer, change the proposed text =93the client =
will wait=20
before some (possibly unbounded) period of time before sending it=94 to =
=93the=20
client will wait before some (possibly unbounded) period of time sending =
the=20
payload body=94.</DIV>
<DIV>&nbsp;</DIV>
<DIV>--Peter</DIV>
<DIV=20
style=3D"FONT-SIZE: small; FONT-FAMILY: 'Calibri'; FONT-WEIGHT: normal; =
COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none; DISPLAY: =
inline">
<DIV style=3D"FONT: 10pt tahoma">
<DIV>&nbsp;</DIV>
<DIV style=3D"BACKGROUND: #f5f5f5">
<DIV style=3D"font-color: black"><B>From:</B> <A =
title=3Dzhong.j.yu@gmail.com=20
href=3D"mailto:zhong.j.yu@gmail.com">Zhong Yu</A> </DIV>
<DIV><B>Sent:</B> Tuesday, May 28, 2013 11:57 AM</DIV>
<DIV><B>To:</B> <A title=3Dmnot@mnot.net =
href=3D"mailto:mnot@mnot.net">Mark=20
Nottingham</A> </DIV>
<DIV><B>Cc:</B> <A title=3Dw@1wt.eu href=3D"mailto:w@1wt.eu">Willy =
Tarreau</A> ; <A=20
title=3Dmurch@andrew.cmu.edu href=3D"mailto:murch@andrew.cmu.edu">Ken =
Murchison</A>=20
; <A title=3Dietf-http-wg@w3.org =
href=3D"mailto:ietf-http-wg@w3.org">HTTP Working=20
Group</A> </DIV>
<DIV><B>Subject:</B> Re: #467: Expect: 100-continue and "final" status=20
codes</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV=20
style=3D"FONT-SIZE: small; FONT-FAMILY: 'Calibri'; FONT-WEIGHT: normal; =
COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none; DISPLAY: =
inline">
<DIV dir=3Dltr>
<DIV>
<DIV>Sounds good. <BR><BR></DIV>I wonder whether this mutual distrust =
between=20
the client and the server is still valid today. RFC 2616 wrote in 1999 =
that some=20
servers did not understand 100-continue. Is that still the case? I =
suspect that=20
most deployed servers today do support 100-continue =
properly.<BR><BR></DIV>Zhong=20
Yu<BR>
<DIV>&nbsp;</DIV></DIV>
<DIV class=3Dgmail_extra><BR><BR>
<DIV class=3Dgmail_quote>On Tue, May 28, 2013 at 1:03 AM, Mark =
Nottingham <SPAN=20
dir=3Dltr>&lt;<A href=3D"mailto:mnot@mnot.net"=20
target=3D_blank>mnot@mnot.net</A>&gt;</SPAN> wrote:<BR>
<BLOCKQUOTE class=3Dgmail_quote=20
style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc =
1px solid">
  <DIV class=3Dim><BR>On 18/05/2013, at 3:45 AM, Zhong Yu &lt;<A=20
  href=3D"mailto:zhong.j.yu@gmail.com">zhong.j.yu@gmail.com</A>&gt;=20
  wrote:<BR><BR>&gt; Hi Mark, I disagree with the =
change.<BR><BR></DIV>OK.<BR>
  <DIV class=3Dim><BR>&gt; The old text describes the intended use case =
- the=20
  client should wait for a 100 response before sending the request body. =
The=20
  text then explains the exceptional case - if the server is not known =
to be 1.1=20
  compliant, the client should not wait forever.<BR>&gt;<BR>&gt; Your =
proposed=20
  text emphasizes the exceptional case, making the intended case rather =
hidden.=20
  I personally prefer the old text.<BR><BR></DIV>I'd say that what's =
usable in=20
  practice is pretty far from the intent, and furthermore, the intent =
isn't=20
  terribly clear.<BR>
  <DIV class=3Dim><BR>&gt; One can argue that both texts have the same =
implication=20
  for implementations, which must handle both the intended and =
exceptional cases=20
  anyway.<BR><BR></DIV>Right.<BR>
  <DIV class=3Dim><BR>&gt; However there is one difference, which I =
think is=20
  critical. According to the old text, if a server is 1.1 compliant, and =
the=20
  client *knows* that the server is 1.1 compliant, client should wait=20
  indefinitely for a response from server; it should not unilaterally =
decide to=20
  send the request body.<BR><BR></DIV>Perhaps, but that's a very limited =
case;=20
  in practice, the only way it can be sure of this knowledge is if it =
has=20
  previously received a HTTP/1.1 response on the *same* connection. =
Since=20
  implementations often use a new connection for a request with a body =
(since=20
  they're often unsafe, and the connection could idle out in transit), =
this=20
  isn't terribly common, AIUI (YMMV).<BR>
  <DIV class=3Dim><BR>&gt; According to the proposed text, the client =
must send=20
  the request body after very a short timeout. This is a new requirement =
on=20
  clients, which is probably not damaging, but unjustified=20
  nevertheless.<BR><BR></DIV>There aren't any new requirements in there; =
all of=20
  this text is only describing semantics and giving implementation =
advice. What=20
  if we modify the text slightly, =
e.g.,<BR><BR>"""<BR>100-continue<BR><BR>* The=20
  request includes a payload body and, after sending the request header =
section,=20
  the client will wait before some (possibly unbounded) period of time =
before=20
  sending it, to give the server an opportunity to reject the request =
with a=20
  final status code. The server can shorten the wait time by sending a =
100=20
  (Continue) response.<BR>"""<BR><BR>With similar modifications as =
appropriate=20
  elsewhere?<BR><BR>Cheers,<BR>
  <DIV class=3DHOEnZb>
  <DIV class=3Dh5><BR><BR><BR>&gt; On Thu, May 16, 2013 at 9:47 PM, Mark =

  Nottingham &lt;<A href=3D"mailto:mnot@mnot.net">mnot@mnot.net</A>&gt;=20
  wrote:<BR>&gt; Looking at this again, I think one of the problems is =
that=20
  people misunderstand what e/c is for.<BR>&gt;<BR>&gt; The current =
definition=20
  of 100-continue in requests doesn't help:<BR>&gt;<BR>&gt; &gt;=20
  100-continue<BR>&gt; &gt;<BR>&gt; =
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =95=20
  The request includes a payload body and the client will wait for a 100 =

  (Continue) response after sending the request header section but =
before=20
  sending the payload body. The 100-continue expectation does not use =
any=20
  expect-params.<BR>&gt;<BR>&gt;<BR>&gt; &lt;<A=20
  =
href=3D"https://svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-httpbis/late=
st/p2-semantics.html#header.expect"=20
  =
target=3D_blank>https://svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-http=
bis/latest/p2-semantics.html#header.expect</A>&gt;<BR>&gt;<BR>&gt;=20
  "will wait for" is misleading here; the client might send the body =
before=20
  getting the 100 response. This should really say something=20
  like:<BR>&gt;<BR>&gt; """<BR>&gt; 100-continue<BR>&gt;<BR>&gt; * The =
request=20
  includes a payload body and, after sending the request header section, =
the=20
  client will wait before some period of time before sending it, to give =
the=20
  server an opportunity to reject the request with a final status code. =
The=20
  server can shorten the wait time by sending a 100 (Continue) =
response.<BR>&gt;=20
  """<BR>&gt;<BR>&gt; It then goes on:<BR>&gt;<BR>&gt; &gt; The primary =
purpose=20
  of the 100 (Continue) status code (Section 6.2.1) is to allow a client =
that is=20
  sending a request message with a payload to determine if the origin =
server is=20
  willing to accept the request (based on the request header fields) =
before the=20
  client sends the payload body. In some cases, it might either be =
inappropriate=20
  or highly inefficient for the client to send the payload body if the =
server=20
  will reject the message without looking at the body.<BR>&gt;<BR>&gt; =
Again, I=20
  think this is misleading. It should say something =
like:<BR>&gt;<BR>&gt;=20
  """<BR>&gt; The 100-continue expectation and 100 (Continue) status =
code=20
  (Section 6.2.1) are useful when a request that has a large body might =
be=20
  rejected by the server; for example, if the request requires =
authorization=20
  (ref to p7). In these situations, clients will often pause between =
sending the=20
  request headers and its body, to give the server an opportunity to =
refuse the=20
  request.<BR>&gt;<BR>&gt; In cases where the request is successful, =
this can=20
  cause a needless delay, as the client waits to time out (a typical =
period is=20
  one second). If the client has send the 100-continue expectation, the =
server=20
  can use the 100 (Continue) status code to indicate that the request is =
not=20
  going to be rejected, thereby avoiding the remainder of this delay=20
  period.<BR>&gt;<BR>&gt; Note that this mechanism does not change the =
request=20
  message parsing algorithm; in particular, whether or not a final =
response=20
  status code is sent, the client still needs to send a complete request =

  message. As such, if a final status code is received, clients will =
often=20
  choose to close the connection, rather than send a complete request =
(e.g., if=20
  it is length-delimited).<BR>&gt; """<BR>&gt;<BR>&gt; If we can agree =
on that,=20
  I think it'll help guide the rest of the discussion here and in the =
other E/C=20
  related issues:<BR>&gt;&nbsp;&nbsp; <A=20
  href=3D"http://trac.tools.ietf.org/wg/httpbis/trac/ticket/458"=20
  =
target=3D_blank>http://trac.tools.ietf.org/wg/httpbis/trac/ticket/458</A>=
<BR>&gt;&nbsp;&nbsp;=20
  <A href=3D"http://trac.tools.ietf.org/wg/httpbis/trac/ticket/468"=20
  =
target=3D_blank>http://trac.tools.ietf.org/wg/httpbis/trac/ticket/468</A>=
<BR>&gt;<BR>&gt;=20
  Am I on track?<BR>&gt;<BR>&gt; Cheers,<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; =
On=20
  25/04/2013, at 3:06 AM, Willy Tarreau &lt;<A=20
  href=3D"mailto:w@1wt.eu">w@1wt.eu</A>&gt; wrote:<BR>&gt;<BR>&gt; &gt; =
On Wed,=20
  Apr 24, 2013 at 01:00:42PM -0400, Ken Murchison wrote:<BR>&gt; =
&gt;&gt;&gt; 2.=20
  If the client receives a final status code instead of 100<BR>&gt; =
&gt;&gt;&gt;=20
  (Continue), it<BR>&gt; &gt;&gt;&gt; should stop sending request body =
if it is=20
  doing so; it must close the<BR>&gt; &gt;&gt;&gt; connection after the =
response=20
  is received.<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; I don't understand =
point=20
  #2.&nbsp; If the client submits a request with<BR>&gt; &gt;&gt;=20
  Expect:100-continue, I would assume that the client MUST NOT send =
any<BR>&gt;=20
  &gt;&gt; part of the body until it receives 100 (Continue) from the=20
  server.&nbsp; If<BR>&gt; &gt;&gt; the server rejects the request based =
on the=20
  headers (with 412, 415, 417,<BR>&gt; &gt;&gt; etc) there should be no =
body=20
  data in the pipe for either the client or<BR>&gt; &gt;&gt; server to =
worry=20
  about, correct?<BR>&gt; &gt;<BR>&gt; &gt; In fact the client can =
decide that=20
  it's been waiting too long for 100<BR>&gt; &gt; and decides to send =
anyway=20
  (because some old servers or intermediaries<BR>&gt; &gt; do not know =
about=20
  Expect and will wait).<BR>&gt; &gt;<BR>&gt; &gt; So what is generally =
done is=20
  that the client sends the headers, waits a<BR>&gt; &gt; bit then =
starts to=20
  send data if the server does not respond.<BR>&gt; &gt;<BR>&gt; &gt;=20
  Implementation of expect+100 seems to be a real mess at some =
places,<BR>&gt;=20
  &gt; but when it works it prove to be quite useful.<BR>&gt; =
&gt;<BR>&gt; &gt;=20
  Willy<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt;<BR>&gt; --<BR>&gt; Mark=20
  Nottingham&nbsp;&nbsp; <A href=3D"http://www.mnot.net/"=20
  =
target=3D_blank>http://www.mnot.net/</A><BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<=
BR>&gt;<BR><BR>--<BR>Mark=20
  Nottingham&nbsp;&nbsp; <A href=3D"http://www.mnot.net/"=20
  =
target=3D_blank>http://www.mnot.net/</A><BR><BR><BR><BR></DIV></DIV></BLO=
CKQUOTE></DIV>
<DIV>&nbsp;</DIV></DIV></DIV></DIV></DIV></BODY></HTML>

------=_NextPart_000_0036_01CE5BED.7F285710--


