[audit][quality] H3 QPACK header decode failure is silently swallowed on the request path
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 58/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- cpp
- Domain
- networking
Research direction
Start at src/proxy/http3/Http3HeaderVIOAdaptor.cc:97 and trace event_handler() into Http3Transaction. Compare how the HTTP/2 path surfaces HPACK errors, then verify that QPACK decode failure results in the specified stream reset or connection close and error codes. Done means malformed header blocks no longer leave the stream in limbo.
Written by the indexing model from the issue text.
Description
Severity: medium · Category: logic-bug
Location: src/proxy/http3/Http3HeaderVIOAdaptor.cc:97
What's wrong
Http3HeaderVIOAdaptor::event_handler() handles QPACK_EVENT_DECODE_FAILED with a debug log and a bare break, then returns EVENT_DONE. No error is propagated to the transaction or connection, so a malformed/undecodable HTTP/3 header block leaves the stream in limbo instead of resetting it or closing the connection as RFC 9204 requires. The gap is acknowledged in-code with a FIXME. This is representative of a broader inconsistency: 2,162 assert sites elsewhere, but hard failures here are ignored.
Evidence
case QPACK_EVENT_DECODE_FAILED:
Dbg(dbg_ctl_v_http3, "%s (%d)", "QPACK_EVENT_DECODE_FAILED", event);
// FIXME: handle error
break;
Suggested fix
Propagate the failure to Http3Transaction so the stream is reset with H3_INTERNAL_ERROR / the connection closed with QPACK_DECOMPRESSION_FAILED, mirroring how the HTTP/2 path surfaces HPACK errors.
Filed from an automated multi-lens codebase audit. Full report: CODEBASE_AUDIT.md / audit-report.html on branch claude/codebase-audit-review-9nw7vz.
- Dominant language
- C++
- Stars
- 0
- Forks
- 0
- Avg merge
- 8h 2m
- Merged PRs (30d)
- 21
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from JakeChampion/trafficserver
-
10.2 area:standards audit severity:low
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
10.2 area:plugin-api audit severity:medium
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
area:httpsm audit severity:medium
Difficulty 1/5 Under an hour Newbie friendliness 86/100
-
area:security audit severity:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
[10.2][hdrs] obs-fold continuation silently dropped when CRLF lands on an input-buffer boundary Open10.2 area:hdrs audit severity:medium
Difficulty 4/5 3-5 days Newbie friendliness 48/100
All issues in JakeChampion/trafficserver
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gazebosim/gz-sensors#662 · 1 comment ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
LadybirdBrowser/ladybird#12123 ·