Repository navigation
fix(reassembly): report an unfragmented datagram whose BUFID is buffered, and leave IPv6 atomic fragments' buffers alone (#2270) - #2345
Conversation
|
Coverage: 91.58% (unit tier, Python 3.15,
Per-file detail: the |
|
Ready to merge at
|
|
Correction to my own "Ready to merge" comment above: I posted it before the cross-review had actually come back, wrongly stating a GOOD TO GO verdict that didn't exist yet. The real verdict, now in: NEEDS CHANGES at
Fixing the mypy annotation now before re-posting a ready note. |
ffc294c to
e4ef0e5
Compare
|
Amended This is not re-claimed as ready — CI needs to run fresh on this head, and I'm not re-asserting a verdict I haven't actually seen yet. Will check back once CI completes. |
|
Review: GOOD TO GO at
|
|
prefer to use dunder name for |
…red, and leave IPv6 atomic fragments' buffers alone (#2270) Problem: in IP.reassembly a datagram with FO 0 and MF clear whose BUFID was buffered submitted that buffer and returned, so the datagram itself was never reported; on IPv6 a colliding atomic fragment also flushed the datagram being reassembled, so its final fragment could no longer complete it. Fix: IPv4 keeps reporting the flushed buffer as incomplete and then reassembles the datagram in a fresh buffer (RFC 791 section 3.2). IPv6 sets IP._isolate_atomic, so an atomic fragment is reassembled in a buffer of its own and submitted without touching the queued one (RFC 6946 section 4). Test: test_ip_unfragmented_bufid_collision_2270_unit pins both cases in strict and loose mode; test_ip's flush test now expects the second datagram too.
e4ef0e5 to
2c95a7b
Compare
|
Renamed |
|
Review: GOOD TO GO at |
make testpasses, and a test case covers the changeWhat is the purpose of your pull request?
fix — bug fixDescription
Closes #2270.
origin/main. Passing on the rebased head.