Clarification of dynamic table size change

Hi,

I got the bug report from nghttp2 user:
https://github.com/tatsuhiro-t/nghttp2/issues/396

When nghttp client sends SETTINGS_HEADER_TABLE_SIZE=4096 in the first
SETTINGS, it looks like google server does not send back dynamic table size
update.  This is probably because they think that it is not necessary
because table size is not changed.

I'd like to clarify this is a valid behavior.  Specification is not clear
enough in this special case.
So the question is whether we are required to send dynamic table size
update as acknowledgement for SETTINGS_HEADER_TABLE_SIZE if it is included
in SETTINGS?

In https://tools.ietf.org/html/rfc7540#section-6.5.2
```
  SETTINGS_HEADER_TABLE_SIZE (0x1):  Allows the sender to inform the
      remote endpoint of the maximum size of the header compression
      table used to decode header blocks, in octets.  The encoder can
      select any size equal to or less than this value by using
      signaling specific to the header compression format inside a
      header block (see [COMPRESSION]).  The initial value is 4,096
      octets.
```
In https://tools.ietf.org/html/rfc7541#section-4.2
```
   A change in the maximum size of the dynamic table is signaled via a
   dynamic table size update (see Section 6.3).  This dynamic table size
   update MUST occur at the beginning of the first header block
   following the change to the dynamic table size.  In HTTP/2, this
   follows a settings acknowledgment (see Section 6.5.3 of [HTTP2]).
```

In https://tools.ietf.org/html/rfc7541#section-6.3
```
   The new maximum size MUST be lower than or equal to the limit
   determined by the protocol using HPACK.  A value that exceeds this
   limit MUST be treated as a decoding error.  In HTTP/2, this limit is
   the last value of the SETTINGS_HEADER_TABLE_SIZE parameter (see
   Section 6.5.2 of [HTTP2]) received from the decoder and acknowledged
   by the encoder (see Section 6.5.3 of [HTTP2]).
```

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.

Best regards,
Tatsuhiro Tsujikawa

Received on Monday, 19 October 2015 16:00:16 UTC