Re: Recovery from decompression failure (was: Re: Cost analysis: (was: Getting to Consensus: CONTINUATION-related issues))

2014/07/24 2:12 "Martin Thomson" <martin.thomson@gmail.com>:
>
> On 22 July 2014 17:50, Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> wrote:
> > We need to also clarify when first header table size change applies: a)
> > reception of SETTINGS (and its ACK) or b) encoding context update.
> > My understanding is a). The receiver of SETTINGS processes the setting
> > values in the order they appear in a frame and shrinking header table
size
> > necessary. Then it can send encoding context update only for last seen
table
> > size value.  This is possible because receiver of SETTINGS ACK also
applies
> > its pending settings in the same way.  It then validates the received
> > encoding context update against last seen value and applies table size
> > again.  This is simpler than multiple encodong context update because we
> > just renember and validate 1 value instead of 2.
>
>
> Have a look at the text that I proposed on this
> (https://github.com/http2/http2-spec/pull/566).
>
> What you have here isn't 100% correct.  When the size limit changes
> multiple names, only two values are relevant:

I know that 2 values are important.

>
>  - the value that the encoder selects (which cannot be larger than the
> decoder-provided size)
>
>  - the lowest value that the decoder advertises
>
> If the latter is smaller than the former, then two encoding context
> updates are required.
>
> This is the simplest reduction of the effect of any number of changes.

So decoder changes table size only when it sees encodong context update? It
works, but it has a disadvantage because decoder has to retain header table
size unchanged until HEADERS/PP are received, which might never arrive.
On the other hand, SETTINGS ACK is guaranteed to arrive (and we have a
timeout for it). If decoder changes header table size, including eviction
to the lowest value it advertised when it received SETTINGS ACK, encoder
only sends its selected value based on the last seen value in SETTINGS
decoder sent. This is because decoder already performed eviction based on
the lowest value and encoding context update comes after SETTINGS ACK.

Best regards,
Tatsuhiro Tsujikawa

Received on Thursday, 24 July 2014 00:56:20 UTC