Repository navigation
fix(dumpkit)!: output writers drop or corrupt what the packets carried - #1305
Merged
Merged
Conversation
Owner
Author
|
Cross-review verdict on
|
- pcap: forward the input's global-header version to PCAPIO (#1255). - plist: write None values and list items instead of skipping them (#1257). - Networks, NULL, NO_VALUE and timezones get an explicit rendering, and _append_fallback reads the slots of every base class (#1258). - json: write characters above U+FFFF as surrogate pairs (#1261). - plist: write a string XML 1.0 cannot spell as <data> (#1262). - OrderedMultiDict dumps as a list of single-key objects in insertion order (#1263). BREAKING: changes the dump schema of every option list. Closes #1255 Closes #1257 Closes #1258 Closes #1261 Closes #1262 Closes #1263
JarryShaw
force-pushed
the
fix/dumper-roundtrip-wave2
branch
from
October 7, 2026 18:41
e63ae13 to
0798570
Compare
Owner
Author
|
Verdict on |
Contributor
|
Coverage: 88.92% (unit tier, Python 3.14,
Per-file detail: the |
This was referenced Oct 7, 2026
JarryShaw
added a commit
that referenced
this pull request
Oct 7, 2026
…d fills the disk - _append_fallback writes a class, module or routine as its qualified name instead of expanding it through vars(), which since #1305 turned a class's mappingproxy into a dict and walked the whole type graph. - An object already on the current expansion path is written as a <circular reference: ...> marker, so a cycle terminates; a shared object is still expanded in full each time it is met. - A top-level fallback object expanding into more than FALLBACK_LIMIT (10000) objects raises UnsupportedCall instead of writing on. - test_runtime_engines: expect the version= keyword #1305 added to PCAP's _open_output call. Closes #1372
JarryShaw
added a commit
that referenced
this pull request
Oct 8, 2026
…d fills the disk (#1381) - _append_fallback writes a class, module or routine as its qualified name instead of expanding it through vars(), which since #1305 turned a class's mappingproxy into a dict and walked the whole type graph. - An object already on the current expansion path is written as a <circular reference: ...> marker, so a cycle terminates; a shared object is still expanded in full each time it is met. - A top-level fallback object expanding into more than FALLBACK_LIMIT (10000) objects raises UnsupportedCall instead of writing on. - test_runtime_engines: expect the version= keyword #1305 added to PCAP's _open_output call. Closes #1372
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.
Please follow the guide below
bad-super-callatcommon.py:437was there before.make testpasses, and a test case covers the change. I ran only the modules listed below, not the full suite.What is the purpose of your pull request?
fix— corrects a defectDescription of your pull request and other information
Closes #1255
Closes #1257
Closes #1258
Closes #1261
Closes #1262
Closes #1263
BREAKING (dump schema):
OrderedMultiDict, which covers every option list, now dumps as[{"NOP": …}, {"MSS": …}, {"NOP": …}]in wire order. It used to dump as{"NOP": [..], "MSS": [..]}.MultiDictkeeps no cross-key order, so it stays grouped.Nonedumps as dictdumper's own{type: NoneType, value: None}.<data>(UTF-8).timedelta.NULLandNO_VALUEdump as'<NULL>'and'<NO_VALUE>'.Probe (
/tmp/rtissues/dumpkit-repro.py): on11ae68ebf, D1, D3, D4, D7, D8 and D9 all report REPRO. After the fix all six report NOREPRO. The D8 regex expects<string>, so I checked it withplistlib.loads. All 16examples/captures/*.pcapstill write byte-identical PCAP. Every*.pcap*capture's plist and json output now parses.Tests:
tests/dumpkit/test_dumper_roundtrip_unit.py. It passes 7 tests with the fix. Without the fix, 7 tests fail; only the v2.4 subtest passes.strpath.tests/dumpkitmodule passes. So do 30 dump-related modules underfoundation,integration,interface,protocolsandtoolkit.tests/project: 389 passed, 1 skipped.run_unittest_leg.py dumpkit: 216 tests, 0 failures.