- From: Roberto Peon <grmocg@gmail.com>
- Date: Mon, 26 Nov 2012 15:13:45 -0800
- To: "Roy T. Fielding" <fielding@gbiv.com>
- Cc: "Adrien W. de Croy" <adrien@qbik.com>, Willy Tarreau <w@1wt.eu>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAP+FsNenSXACqbAv_XjXodyNcHfQZbqQYvR2Uv=+hM41bYir-Q@mail.gmail.com>
(or am I crazy? :) ) -=R On Mon, Nov 26, 2012 at 3:13 PM, Roberto Peon <grmocg@gmail.com> wrote: > Roy-- > > That definitely solves part of the problem (there really need to be two > status codes, one for the server and one for the point-to-point > connection), but for a caching intermediary, it would like to know up-front > if it should bother to put that data into the cache. I know that I wouldn't > want to put anything framed with connection closed into the cache, and so > having something propagate the nature of the worst point-to-point framing > is probably useful. > > -=R > > > On Mon, Nov 26, 2012 at 3:03 PM, Roy T. Fielding <fielding@gbiv.com>wrote: > >> In waka, each message ends with an 8bit status code -- it is >> either the same as that given in the beginning or a new code if the >> message was sent incomplete (on a request, it is used to indicate that >> an upload is being aborted). I send the entire code because I want >> to distinguish between "origin closed connection" and "intermediary >> timed out waiting for more data from origin". I assume that something >> similar could be accomplished in SPDY by ending the last frame with >> some sort of unexpected upstream termination bit. >> >> ....Roy >> >> On Nov 26, 2012, at 2:36 PM, Adrien W. de Croy wrote: >> >> >> in the case I was talking about, the intermediary already chunked the >> data. So it really has no option when the server closes. It can't close >> to the client without sending a 0 chunk, since that would turn a >> potentially complete resource into an aborted one. So it must send the 0 >> chunk. >> >> Unless you're going to say any time the intermediary expects the server >> to close it should not chunk the data to the client. >> >> I think we're just stuck with this until 1.2 or 2.0 deprecates the >> mechanism completely. Has it really been that big a problem? >> >> Adrien >> >> ------ Original Message ------ >> From: "Roberto Peon" <grmocg@gmail.com> >> To: "Adrien W. de Croy" <adrien@qbik.com> >> Cc: "Willy Tarreau" <w@1wt.eu>;"HTTP Working Group" <ietf-http-wg@w3.org> >> Sent: 26/11/2012 11:23:30 p.m. >> Subject: Re: Message length and caches >> >> I was understanding that Willy was suggesting that we potentially add a >> recommendation (or stronger) about what an intermediary should do when it >> has a response which is framed by connection close. >> Specifically, if a response is framed by connection close, then, treat >> the response as if it was uncacheable and attempt to convey to the client >> that the originator of the response framed with connection close. >> That indication could be accomplished by also framing with connection: >> close, or it could take the form (if we extend the spec) of a new header of >> some kind. >> -=R >> >> >> On Mon, Nov 26, 2012 at 12:09 AM, Adrien W. de Croy < <adrien@qbik.com> >> adrien@qbik.com> wrote: >> >>> Hi Willy >>> >>> it actually gets worse than this. >>> >>> Some intermediaries chunk emitted data if the server indicated it would >>> close and sends no C-L (so that the intermediary can keep the client >>> connection alive). >>> >>> Since that intermediary can't tell the difference between an abortive >>> and normal close, it will send a 0 chunk on close. >>> >>> So the receiver of that message will never know what happened. >>> >>> So I agree with Roberto about use of TCP close as a protocol signal, but >>> we're stuck with it. >>> >>> Adrien >>> >>> >>> >>> ------ Original Message ------ >>> From: "Willy Tarreau" < <w@1wt.eu>w@1wt.eu> >>> To: "HTTP Working Group" < <ietf-http-wg@w3.org>ietf-http-wg@w3.org> >>> Sent: 26/11/2012 8:35:26 p.m. >>> Subject: Message length and caches >>> >>>> Hi, >>>> >>>> When there is no explicit body length in a message, it is terminated by >>>> closing the connection. As we all know, this causes some ambiguity for >>>> the client because it doesn't know whether a response body is complete >>>> or was truncated by anything along the path, including timeouts. Thus >>>> I'm wondering if some caches make a difference between such responses >>>> or not (eg: a cache could decide not to cache objects terminated this >>>> way). >>>> >>>> The reason is that we recently implemented support for gzip compression >>>> in haproxy and I preferred not to add an explicit response end to >>>> messages which did not have one for the reason above. This results in >>>> not compressing such responses at all (since we would not emit the >>>> trailing gzip header with crc, making all responses appear as >>>> truncated). >>>> >>>> Do some people think that this practice is paranoid ? Maybe after all >>>> we could compress and chunk responses and make the client be certain >>>> that the message is complete while we were not. It just makes me feel >>>> a bit like lying to the client. >>>> >>>> Depending on common practices and opinion, I think that we could add >>>> a small paragraph in -p1 about this (eg: intermediaries should not >>>> re-chunk a close-delimited response). >>>> >>>> Regards, >>>> Willy >>> >>> >> >
Received on Monday, 26 November 2012 23:14:15 UTC