Subject: PAD_HIGH and PAD_LOW bits

From: David Krauss <[email-masked]>
Date: Mon, 17 Mar 2014 16:01:46 +0800

Hi all! I started a C++ implementation, and I’m just getting up to speed.

I noticed that PAD_HIGH and PAD_LOW are defined for DATA, HEADERS, PUSH_PROMISE, and CONTINUATION frames. In the latter three, they are bits 4 and 3, but in DATA they are bits 5 and 4, with 3 being unused. This difference seems strange as the bits are always interpreted identically. Is it an erratum or a legacy feature?

---

From: David Krauss <[email-masked]>
Date: Tue, 18 Mar 2014 07:24:33 +0800

Git Blame shows the divergence occurred on January 24 with the log message "Dependency-based stream prioritization.” The priority bit was added to the HEADERS frame, displacing the previous allocation of PAD_HIGH and PAD_LOW. The padding flags were then reassigned in all other frames except DATA. This looks like the result of search-and-replace without wrap-around — DATA uniquely appears before HEADERS in the file.

It looks like the DATA flags should be changed to follow suit before this mistake becomes permanent.