aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-09-05 00:30:54 +0200
committerSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-09-05 00:30:54 +0200
commit644772b9efffda4dac01aff54042b3162079514d (patch)
treea91663da2279dd9d52552239d404e9b438735987 /contrib
parent0ebd4db32b39cb7c505148f090df4b7ac778c307 (diff)
downloadbitcoin-644772b9efffda4dac01aff54042b3162079514d.tar.xz
message-capture-parser: fix AssertionError on parsing `headers` message
If a test framework message's field name is in the list of `HASH_INT_VECTORS`, we currently assume that it _always_ has to contain a vector of integers and throw otherwise (introduced in PR #25367, commit 42bbbba7c83d1e2baad18b4c6f05bad1358eb117). However, that assumption is too strict. In this concrete case, the (de)serialization field name "headers" is used in two different message types, one for `cfcheckpt` (where it is serialized as an integer vector), and another time for `headers` (where it is serialized as a vector of `CBlockHeader`s). Fix by adding the integer type check as additional condition to the `HASH_INT_VECTORS` check rather than asserting. Fixes #25954.
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/message-capture/message-capture-parser.py3
1 files changed, 1 insertions, 2 deletions
diff --git a/contrib/message-capture/message-capture-parser.py b/contrib/message-capture/message-capture-parser.py
index eefd22a60e..33759ee713 100755
--- a/contrib/message-capture/message-capture-parser.py
+++ b/contrib/message-capture/message-capture-parser.py
@@ -79,8 +79,7 @@ def to_jsonable(obj: Any) -> Any:
val = getattr(obj, slot, None)
if slot in HASH_INTS and isinstance(val, int):
ret[slot] = ser_uint256(val).hex()
- elif slot in HASH_INT_VECTORS:
- assert all(isinstance(a, int) for a in val)
+ elif slot in HASH_INT_VECTORS and all(isinstance(a, int) for a in val):
ret[slot] = [ser_uint256(a).hex() for a in val]
else:
ret[slot] = to_jsonable(val)