- From: Willy Tarreau <w@1wt.eu>
- Date: Fri, 15 Apr 2016 06:49:24 +0200
- To: Alex Rousskov <rousskov@measurement-factory.com>
- Cc: "Roy T. Fielding" <fielding@gbiv.com>, RFC Errata System <rfc-editor@rfc-editor.org>, HTTP Working Group <ietf-http-wg@w3.org>
On Thu, Apr 14, 2016 at 06:50:43PM -0600, Alex Rousskov wrote: > On 04/14/2016 04:39 PM, Roy T. Fielding wrote: > > > Don't confuse the various lenient ways in which implementations parse > > HTTP with the requirements on generating HTTP messages that are > > defined by the ABNF. The ABNF is intended to be more restrictive. > > I fully agree, but we are not discussing ABNF creation IMO. We are > discussing a syntax change by an HTTPbis RFC. To change HTTP/1 syntax > that has been in use for many years, the "Founders Intent" alone is not > enough IMHO. There must be other compelling reasons. The only other > reason given so far was "lack of known examples", followed by your > discussion of "space padding" as a known usage example. I expect the bar > for HTTP/1 syntax change to be significantly higher. Alex, it's not that black or white. We focused on maximized interoperability, so you need to understand that when some people report that product X,Y or Z doesn't even support chunk extensions, that other products are simply broken regarding this and we realize that nobody produces them, it's natural to deprecate them. They were apparently re-added in a stricter way based on identified implementations to optimize the intersection between producers and consumers. It's very difficult to satisfy every implementation, especially with HTTP that everyone tried to implement without looking at the doc in the late 1990 and early 2000 resulting in many incompatible implementations. So here there's no intent to break anything, instead there's an intent to make everything work together based on all the data everyone could collect. It's not rocket science but it proved to work pretty well given all the interoperability issues that could be addressed (eg: header folding, multiple content-length, CRLF after body, etc). I do think that adding the BWS back could be enough. And maybe even adding the only one ICAP uses. After all it already took something like 5 years for someone to notice this change, maybe ICAP is the only exception to the rule and is sufficient to address without further breaking existing implementations. > > And, no, it is NEVER a good idea for new IETF protocols to > > effectively alias other IETF protocols. > > AFAICT, ICAP does not alias HTTP. It uses RFC 2616 to define HTTP > messages. This is similar to RFC 7230 using URI definitions from RFC > 3986. When URIbis obsoletes RFC 3986, I expect the authors to be very > careful not to accidentally invalidate HTTP/1 messages. IMHO, HTTPbis > should offer the same courtesy to ICAP. Not exactly in fact, RFC3507 says this : ICAP is a request/response protocol similar in semantics and usage to HTTP/1.1 [4]. Despite the similarity, ICAP is not HTTP, nor is it an application protocol that runs over HTTP. (...) ICAP uses TCP/IP as a transport protocol. So in short it allows implementers to save time by reusing their HTTP parsers but does not expect to be strictly compatible. There are even some intended differences, such as : Note in particular that the "Transfer-Encoding" option is not allowed. (...) Encapsulated bodies MUST be transferred using the "chunked" transfer-coding described in Section 3.6.1 of [4]. However, encapsulated headers MUST NOT be chunked. These ones alone prevent reliable forwarding over HTTP gateways. But I do agree that if we don't break anything by adding the BWS back it would be better, at least because we're now pretty sure that people who need to adapt their HTTP parsers to also support ICAP will support it anyway. Regards, Willy
Received on Friday, 15 April 2016 04:50:00 UTC