Repository navigation
feat(application): dissect every HTTP/2 frame in a segment - #2609
Merged
Merged
Conversation
Owner
Author
|
GOOD TO GO at |
Contributor
|
Coverage: 94.03% (unit tier, Python 3.15,
Per-file detail: the |
Owner
Author
|
resolve conflicts |
- HTTPv2._import_next_layer dissects a whole frame after the first as a further HTTPv2 layer, the previous frame's payload, as TLS chains records. - A later whole frame that fails to decode is Raw with the rest of the segment and the parser's error (via beholder in _import_next_frame); a frame the segment ends inside stays Raw with no error. - protocol=/layer= stops and FRAME_LAYER_LIMIT end the chain. - Document the behaviour on httpv2.rst, the module and class docstrings, and protocol-family-grouping.rst's Chained Records. - Tests: two/three frames, preface, malformed and truncated later frames, stop conditions, the layer limit, and round trips both ways.
JarryShaw
force-pushed
the
feat/2536-http2-frames
branch
from
November 2, 2026 02:47
7fd52ff to
3d97640
Compare
Owner
Author
|
Rebased onto
|
5 tasks done
JarryShaw
added a commit
that referenced
this pull request
Nov 2, 2026
…s latest wave into 1.6.0 (#2449) - Added: every whole HTTP/2 frame in a TCP segment is a further HTTPv2 layer, the previous frame's payload, as with TLS (#2609). - Folded into unreleased entries: SSLv3 lives in pcapkit.protocols.application.sslv3 (#2602), and a reassembled DTLS Datagram's packet holds the deferred handshake decode (#2605). tls.SSLv3 is in no release tag, so the entry records no move. - Changed: the remaining xdist jobs at -n logical (#2606) join the CI entry, and the member-order entry cites the last reorder (#2613). - No entry for the test-only #2611 and #2612, or for #2610's private registry sentinel, which changes no behaviour. - CHANGELOG.md regenerated; util/changelog_md.py --check passes.
1 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
make pylint,make mypy,make isort)make testpasses, and a test case covers the changeWhat is the purpose of your pull request?
feat— adds a featureDescription of your pull request and other information
HTTP/2 now dissects every whole frame in a TCP segment, using the chained-record model #2517 set for TLS. Two frames read
TCP:HTTP/2:HTTP/2, and each frame after the first is the previous frame's payload.Rawwith the rest of the segment and the error set. A frame cut short, in its header or its payload, staysRawwith no error.protocol='HTTP/2','HTTP','HTTPv2', the class,layer='Application'andFRAME_LAYER_LIMITeach stop the chain.from_dataroute.A later frame of a type RFC 9113 does not define is dissected as an HTTP/2 layer, because §4.1 and §5.5 make every 9-octet header a legal frame.
Closes #2536