Subject: Re: [quicwg/base-drafts] QPACK: Encode Largest Reference modulo MaxEntries (#1763)

From: Bence Béky <[email-masked]>
Date: Fri, 07 Dec 2018 08:26:25 -0800

Sorry for asking the obvious but what happens if a Dynamic Table Size Update on the encoder stream is racing with a Header Data Prefix on a request stream?  How will the decoder know whether to use the maximum dynamic table size before or after the Dynamic Table Size Update for calculating MaxEntries to decode LargestReference?  Or is SETTINGS_HEADER_TABLE_SIZE used instead for calculating MaxEntries?

-- 
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/1763#issuecomment-445286014

---

From: Dmitri Tikhonov <[email-masked]>
Date: Fri, 07 Dec 2018 08:31:30 -0800

`MaxEntries` never changes: it is a function of the the maximum allowed dynamic table size specified by the decoder.

-- 
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/1763#issuecomment-445287678

---

From: Bence Béky <[email-masked]>
Date: Tue, 11 Dec 2018 11:02:48 -0800

Thanks for the clarification.  I find the current language quite confusing, so I created https://github.com/quicwg/base-drafts/pull/2115 to tidy it up.

-- 
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/1763#issuecomment-446321199

---

From: Bence Béky <[email-masked]>
Date: Fri, 21 Dec 2018 07:11:34 -0800

bencebeky commented on this pull request.

> @@ -149,7 +149,9 @@ peer's SETTINGS frame.
 
 Before a new entry is added to the dynamic table, entries are evicted from the
 end of the dynamic table until the size of the dynamic table is less than or
-equal to (maximum size - new entry size) or until the table is empty.
+equal to (maximum size - new entry size) or until the table is empty. The
+encoder MUST not evict a dynamic table entry unless it has first been

Technically, this does not forbid the encoder from referring to an entry on the request/push stream but only emitting it later on the encoder stream, which would of course be crazy but would mess with the Largest Reference wrapping algorithm.  I feel like some wordsmithing might be beneficial here.

-- 
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/1763#discussion_r243606643