From 2a58fec0a31614c6536e71eb1fa0fbb979c212ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 12 Aug 2026 19:25:14 +0300 Subject: [PATCH] Fix dropped change flags + FIDI parsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - capture.py: DirectSniffer/GsmtapListener yield (type, data, flags), CaptureManager passes flags to insert_message (change flags were previously dropped, leaving every change row with flags=0) - protocol.py: add _parse_fidi (1-byte value) — FIDI was mis-mapped to _parse_change (4-byte flags), so FIDI messages were silently dropped - database.py: pass flags into decode_sniff_msg - decode.py: decode_change(flags) reads flags directly; decode_sniff_msg gains flags parameter; change messages no longer require non-empty data - tests: fix FIDI test, add change/fidi decode tests (43 total) --- .gitignore | 1 + simtrace2_pysniff/protocol.py | 8 +++++++- simtrace2_pysniff/server/capture.py | 8 ++++---- simtrace2_pysniff/server/database.py | 7 ++++--- simtrace2_pysniff/server/decode.py | 14 +++++--------- tests/test_decode.py | 27 +++++++++++++++++++++++++++ tests/test_protocol.py | 7 ++++--- 7 files changed, 52 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 180a2a7..d720fdd 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dist/ build/ .venv/ decode-errors.log +auth-test.log diff --git a/simtrace2_pysniff/protocol.py b/simtrace2_pysniff/protocol.py index 091fa1d..d3dc5d5 100644 --- a/simtrace2_pysniff/protocol.py +++ b/simtrace2_pysniff/protocol.py @@ -85,6 +85,12 @@ def _parse_change(payload): consumed = 4 return consumed, flags, b'' + +def _parse_fidi(payload): + if len(payload) < 1: + return None + return 1, 0, payload[:1] + _SNIFF_DATA_FMT = '