Re: i28 proposed replacement text

connection closure only signals end of message if the message had no 
Content-Length header, and was not chunked.

Otherwise, if there is a Content-Length header, (and not chunked) then 
the message is complete when the number of bytes indicated have been 
received.  The connection can then be kept open (classic Connection: 
keep-alive without chunking).

Otherwise with chunking a message is only complete if you receive a 
terminating chunk (specified chunk length 0).

It's commonly not practical for a proxy to retry on truncation.  E.g if 
it has been spooling data through in the meantime, and gets a premature 
closure, with a retry it can't guarantee the same entity.  Plus the 
information that the connection was aborted is information the client 
may want.

Therefore it makes sense for the proxy to simply abortively close the 
connection to the client and let the client deal with it, that then 
conveys the (useful) information to the client that the transfer was 
aborted.

So IMO the proxy should not retry, as this can cause confusion for 
clients - and clients are generally equipped to retry anyway, but with 
some visual indication to a user

obviously this only goes for the small proportion of clients that are 
browsers with humans operating them.


Robert Siemer wrote:
>>>> But one question stays: should a client/proxy retry if it detects a
>>>> truncated message? - As I read RFC2616: yes (especially if the method is
>>>> safe).
>>>>         
>>> Perfectly fine for user agents, but not so sure about proxies. But the
>>> partial response MAY be cached and completed using range requests.
>>>       
>> Ok, so if the proxy gets a reply using connection closure to signal the 
>> end of the reply, should the proxy always treat this as an incomplete 
>> transaction?
>>     
>
> Of course not (as the proxy can not detect truncated messages this way).
>
>
> Robert
>
>   

-- 
Adrien de Croy - WinGate Proxy Server - http://www.wingate.com

Received on Thursday, 5 June 2008 10:33:59 UTC