• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

elixir-mint / hpax / f7d69fc7b33310c4da9165d44ba56cee97df4989
98%

Build:
DEFAULT BRANCH: main
Ran 21 Sep 2026 08:32AM UTC
Jobs 1
Files 4
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Sep 2026 08:29AM UTC coverage: 97.895% (+1.9%) from 95.977%
f7d69fc7b33310c4da9165d44ba56cee97df4989

push

github

web-flow
Add HPAX.protocol_resize/2 for decoding tables (#32)

* Add HPAX.protocol_resize/2 for decoding tables

resize/2 sets both the protocol maximum and the table's own maximum
size. That's right for an encoding context, which takes the whole size
the protocol permits and declares it, but a decoding table's maximum
size is chosen by the peer's encoder and declared with a dynamic table
size update instruction (RFC 7541 4.2). Raising the protocol maximum on
a decoding table kept entries the peer's encoder had evicted, so an
indexed reference to one of them decoded to a stale header instead of
failing.

protocol_resize/2 changes only the maximum the peer is permitted to use
and follows it down when it drops below the maximum the encoder
declared. The encoder then has to declare a size of at most the new
maximum at the start of its next block, which RFC 9113 4.3.1 requires
the receiver to enforce with a COMPRESSION_ERROR, so decode/2 returns
{:error, :missing_size_update} for a block that doesn't start with one.
When the maximum changes more than once before that block, the smallest
of them is the one that has to be declared.

* Return an error tuple for a malformed dynamic table size update

decode/2 parses the size update's integer before the clause that catches
decoding errors, so a block whose integer never ends, such as <<0x3F>>,
threw {:hpax, :bad_integer_encoding} at the caller instead of returning
{:error, :bad_integer_encoding}. Callers that follow the documented
contract don't catch it, so the throw takes down the process decoding
the block.

17 of 17 new or added lines in 2 files covered. (100.0%)

186 of 190 relevant lines covered (97.89%)

3961.98 hits per line

Jobs
ID Job ID Ran Files Coverage
1 f7d69fc7b33310c4da9165d44ba56cee97df4989.1 21 Sep 2026 08:32AM UTC 4
97.89
GitHub Action Run
Source Files on build f7d69fc7b33310c4da9165d44ba56cee97df4989
  • Tree
  • List 4
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • f7d69fc7 on github
  • Prev Build on main (#DEBEA435...)
  • Next Build on main (#6EF60653...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc