Repository navigation
refactor(reassembly): bring DTLS reassembly to IP/TCP parity - #2605
Merged
Merged
Conversation
- The DTLS Datagram is a DeferredPacket: a complete message's packet is a Deferred running dtls_handshake's decoder on first read, an incomplete one's is None. - Deferred's type parameter admits the DTLS handshake header, and its analyser may return a DTLSHandshake. - foundation.analysis.dtls moves the decode into _read_handshake, shared by dtls_handshake and the Deferred. - The DTLS reassembly class sets __protocol_type__ to the DTLS protocol. - reassembly-integration.rst no longer lists the divergences. - New parity tests over pcap and pcapng; the Deferred and DeferredPacket wiring tests cover the DTLS datagram.
Owner
Author
|
GOOD TO GO at |
Contributor
|
Coverage: 94.03% (unit tier, Python 3.15,
Per-file detail: the |
This was referenced Nov 2, 2026
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.
This was referenced Nov 2, 2026
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?
refactor— changes neither behaviour nor performanceDescription of your pull request and other information
DTLS reassembly is brought to IP/TCP parity on the two points reassembly-integration.rst listed as remaining divergences, and the page no longer lists them.
packetfield: a reassembled DTLSDatagramnow carries apacketfield, decoded lazily through the sharedDeferred, as IP and TCP do.Deferred: it gains a(msg_type, length, message_seq)key constraint. The deferred decode runs the privatepcapkit.foundation.analysis.dtls._read_handshake, anddtls_handshakeremains the public entry point.Settled on the worker's recommendations, open to the owner:
_read_handshakerather thanself.protocol.read_handshake;Deferredis extended rather than given a DTLS-only placeholder;packet=Noneunderstrict=Falsetoo, which keepspacket == dtls_handshake(datagram);_read_handshakestays private.It unblocks #2581 (IP and TCP analysis modules).
Closes #2531