Repository navigation
Conversation
3dd077d to
bcadcbf
Compare
1a5126d to
c1ea7de
Compare
|
Rebased onto #2451's new head |
|
NEEDS CHANGES (Sonnet,
|
|
NEEDS CHANGES (Sonnet,
|
|
Question: why cap it? I think we only cap IP bc of RFC specs, but we do not cap on TCP cause there's none and if there's non on DTLS, we should not cap as well. |
|
Good question. The cap is a workaround for one design choice, not an RFC limit.
Recommendation: drop the cap and grow the DTLS buffer with received data, as TCP does. Memory then tracks bytes actually received, not what a packet claims, and the bug goes away without a limit. Options for the owner: (a) this, or (b) keep a cap as policy in |
|
yea, i think we should actually use TCP's reassembly algorithm as it is more modern. if possible i'd consider rework IP's as well. also, i'm wondering if there's any RFC specify if any of these protocol's reassembly should be implementation. if so, we should follow directly. if none, we take the best algorithm. |
129b8ce to
483a854
Compare
|
NEEDS CHANGES (Sonnet,
|
483a854 to
81b3d9f
Compare
0fca5b4 to
f734108
Compare
- add foundation.reassembly.dtls.DTLS, keyed by UDP 5-tuple and DTLS epoch - DTLS.read decodes the fragment completing a handshake message into ClientHello/ServerHello - overlapping fragments are accepted (RFC 6347 4.2.3) - opt-in only; Extractor-level wiring left as a follow-up - isort-clean reassembly and DTLS modules - DTLS.read reassembles only the datagram's first record (Known Limitations) Tests: tests/foundation/reassembly/ -- 197 passed, 897 subtests.
f734108 to
65d7935
Compare
|
Held: Actions queue at 42 (above the hold line). The restack onto #2451's new head ( |
- Each message buffer is allocated at its declared length, the unit RFC 6347 section 4.2.3 buffers, bounded at 16 MiB by the 24-bit length field. The base does this; the class docstring documents it. - Overlapping fragments are accepted through the RFC 815 hole list. - Tests: a partial message holds its declared length, and with strict=False a timeout reports that length with the gaps zero-filled. Overlapping fragments reassemble byte-exact in forward, reverse and shuffled order.
81b3d9f to
0fdf448
Compare
65d7935 to
09ead29
Compare
|
Held: Actions queue at 47 (above the hold line). The fix round dispatches when the queue drops below 40. |
|
NEEDS CHANGES (Sonnet,
|
|
Decision needed: close #2469 and #2468, or re-scope. Options: (a) close both, since the 64KiB cap is dropped and origin 0fdf448 already sizes buffers by declared length; (b) re-scope #2468 to tests that pin declared-length sizing, and close #2469. Recommendation: (a). Nothing to push from the cap work. |
|
take (a) |
|
Closing per owner ruling: the 64KiB cap is not needed under the HDL implementation (see #2468). |
Please follow the guide below
make pylint,make mypy,make isort)make testpasses, and a test case covers the changedocs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible — N/A, centralisedWhat is the purpose of your pull request?
[x]
fix— corrects a defect · [ ]feat— adds a feature · [ ]perf— changes performance, not behaviour · [ ]refactor— changes neither behaviour nor performance · [ ]test— tests only · [ ]docs— documentation only · [ ]ci— workflows or build tooling · [ ]release— bumps the version or rolls up a distribution · [ ]chore— anything else · [ ]const— regenerates constant or registry tables, members keeping their numeric valuesDescription of your pull request and other information
Stacked on #2451 (reassembly for #2440).
The base already sizes each DTLS handshake message buffer at its declared length (
bytearray(length), RFC 6347 section 4.2.3), so at most 16 MiB. This PR pins that with tests.New tests: a partial message holds its declared length; with
strict=False, a timeout reports that length with gaps zero-filled; overlapping fragments reassemble byte-exact in forward, reverse and shuffled order.Refs #2468