Subject: [quicwg/base-drafts] Explicitly talk about Largest Reference zero. (#2251)

From: Bence Béky <[email-masked]>
Date: Sun, 23 Dec 2018 13:20:37 -0800

At two places, explicitly spell out that Largest Reference is zero if there are no dynamic entries; also remove "Largest Reference" from a sentence that currently implies that it could be set to any value.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/2251

-- Commit Summary --

  * Explicitly talk about Largest Reference zero.

-- File Changes --

    M draft-ietf-quic-qpack.md (15)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/2251.patch
https://github.com/quicwg/base-drafts/pull/2251.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2251

---

From: Bence Béky <[email-masked]>
Date: Sun, 23 Dec 2018 13:21:05 -0800

bencebeky commented on this pull request.

> @@ -874,8 +876,7 @@ Largest Reference and Base Index to the same value.  In such case, both the sign
 bit and the Delta Base Index will be set to zero.
 
 A header block that does not reference the dynamic table can use any value for
-Base Index; setting both Largest Reference and Base Index to zero is the most

I propose removing "Largest Reference" from this sentence because setting it to zero is not a choice.

Optionally one can start the paragraph by "A header block that does not reference the dynamic table MUST use zero for Largest Reference but can use any value...".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2251#pullrequestreview-187632892

---

From: Martin Thomson <[email-masked]>
Date: Sun, 23 Dec 2018 22:34:24 -0800

martinthomson commented on this pull request.

See also #2111.

You can encode a Largest Reference of zero.  That's the problem with having an overloaded concept.  But in practice both can be zero.  0 on the wire means that there are no references; 0 the abstract notion is a sentinel value only, so maybe that's what is confusing.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2251#pullrequestreview-187650692

---

From: Bence Béky <[email-masked]>
Date: Mon, 24 Dec 2018 06:44:24 -0800

I think the word "can" is misleading in your sentence "You can encode a Largest Reference of zero", because whether the encoded Largest Reference is zero is not a choice.  I have the same problem with the current wording of the spec, that's exactly why I'm proposing this change.

In my mind, 0 for the abstract notion means that there are no references.  (Is this what you mean by "sentinel value"?)  The spec already calls this out at least in one place, and I'm proposing more clarifications at issue #2251.

In my mind, 0 on the wire does not mean anything.  It has to be decoded.  It just happens so that 0 is mapped to 0, and it just happens to that the current wording of the spec is that 0 is not transcribed, but what that actually means is that 0 is transcribed to 0.

In any case, we having this discussion here is an indication that the text needs some kind of improvement.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2251#discussion_r243835296