- From: Fred Akalin <akalin@google.com>
- Date: Mon, 23 Sep 2013 20:00:21 -0700
- To: Mike Bishop <Michael.Bishop@microsoft.com>
- Cc: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
- Message-ID: <CANUYc_QV0Bp9crxzNhp9TpPk0AHUdJ9vGtKdupZKEB9eGPtF-Q@mail.gmail.com>
The responsibility is on the encoder. There's no room for decision on the decoding side. The encoder could even encode it as a literal etc. On Monday, September 23, 2013, Mike Bishop wrote: > Yes, that’s a reasonable interpretation. While the spec could be > clearer, I think that’s the correct reading. That still leaves open the > question about correct behavior, though. You said “You'll need to take the > appropriate action when an entry in the reference set gets dropped, which > is most likely explicitly emitting it before it gets dropped.” Is this > appropriate action on the part of the compressor, or the decompressor? > > If the compressor, what action is that -- does it need to notice that an > entry it cares about is going to be dropped and immediately encode two > indexed references to it, forcing it to be emitted before it’s dropped? Or > is it an appropriate action on the decompressor’s part, which means the > compressor needs to ensure that nothing in the reference set it wishes to > remove falls off the list before it gets removed? > > Sent from Windows Mail > > *From:* Fred Akalin <javascript:_e({}, 'cvml', 'akalin@google.com');> > *Sent:* Monday, September 23, 2013 1:51 PM > *To:* Mike Bishop <javascript:_e({}, 'cvml', > 'Michael.Bishop@microsoft.com');> > *Cc:* ietf-http-wg@w3.org <javascript:_e({}, 'cvml', > 'ietf-http-wg@w3.org');> > > On Mon, Sep 23, 2013 at 1:37 PM, Mike Bishop < > Michael.Bishop@microsoft.com> wrote: > > Found a corner case that I’m not sure HPACK handles, or if it does I’m > not finding it and we might want to clarify…. > > Sequence of events: > > - Header X is present in reference set and header table. > - Some other addition to the header table causes header X to be > dropped. (This could be a header that causes X to be dropped, or a > substitution operation that replaces X.) > > > - Now the compressor wishes to remove X from the reference set. How > does it do so? > > > Per 3.2.1, the only operation that has the effect of removing an entry > from the reference set is an indexed representation of a header already in > the reference set. But you can’t send the indexed representation of a > header no longer in the header table. > > > From 3.1.3: "A reference set is defined as an unordered set of references > to entries of the header table." I interpret this to mean that when an > entry is removed from the header table, it's removed from the reference set > also. > > > To address it, we could say: > > - *Replacing X with another entry in the header table also replaces X > in the reference set.* This makes perfect sense, but needs to be > stated. > - *Dropping X from the header table also drops it from the reference > set.* This is more problematic, because the compressor can’t just > pass over headers it wants to communicate which are already in the > reference set. Instead, it needs to leave them until the end, then check > if they’re all still in the reference set. If not, it needs to take > another action to emit one or more, then check t > >
Received on Tuesday, 24 September 2013 03:00:48 UTC