- From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
- Date: Tue, 20 Oct 2015 01:26:16 +0900
- To: Cory Benfield <cory@lukasa.co.uk>
- Cc: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
- Message-ID: <CAPyZ6=JVZnn-bwkXpRfPJxMVsTOxLsqhMFLsLZX3s9ojR6C8tA@mail.gmail.com>
Hi, On Tue, Oct 20, 2015 at 1:12 AM, Cory Benfield <cory@lukasa.co.uk> wrote: > > > On 19 Oct 2015, at 16:59, Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> > wrote: > > > > I can read that dynamic table size update is always necessary as > acknowledgement of SETTINGS_HEADER_TABLE_SIZE if it is present in SETTINGS. > > But someone can read in the other way. > > Yeah, see, I read it the other way. My reading of section 4.2 of RFC 7541 > emphasises this: “a *change* in the maximum size […] is signalled”. But > you’re right that it’s ambiguous. In this case, I’d say that an > implementation MAY emit a dynamic table size update if the size is > unchanged (because it’s a no-op), but MUST do so if it has changed. For > implementation simplicity, many implementations will chose to always emit > that size update, but equally many implementations will not. If we’re > counting, my own implementation does the same thing as Google’s: see > here[0]. > > Specifically, I don’t think the HPACK layer should complain because a > dynamic table size update was not received when the dynamic table size did > not change. In this instance I believe nghttp2 is being overly strict about > the relationship between the HTTP/2 layer and the HPACK layer. > > Could be. But I don't think we mixed HTTP/2 layer and HPACK layer. More specifically, we input the max header table size to HPACK, and see what it react to it in this case. It is specific to HPACK implementation behaviour. In general, we choose simpler path in HTTP/2, I mean single execution path rather than "do this if we have x otherwise do that". For example, we require client preface even if we negotiated HTTP/2 over ALPN. We send HTTP2-Settings in HTTP Upgrade request, but still we need to send SETTINGS frame in client preface. Taking into account of this split, it is more natural to always send header table size update as acknowledgement for SETTINGS_HEADER_TABLE_SIZE. We can do more strict validation about the peer; it might forget to implement it anyway. Best regards, Tatsuhiro Tsujikawa > Cory > > [0]: https://github.com/python-hyper/hpack/blob/master/hpack/table.py#L188 >
Received on Monday, 19 October 2015 16:27:03 UTC