Fix dropped change flags + FIDI parsing
- 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)
This commit is contained in:
1 parent
4097bb864e
commit
2a58fec0a3
7 files changed
+52
-20
No files matched your search
@@ -24,7 +24,7 @@ class GsmtapListener:
|
||||
if sub_type is None:
|
||||
continue
|
||||
msg_type = 'atr' if sub_type == GSMTAP_SIM_ATR else 'tpdu'
|
||||
yield msg_type, data
|
||||
yield msg_type, data, 0
|
||||
|
||||
|
||||
class DirectSniffer:
|
||||
@@ -49,7 +49,7 @@ class DirectSniffer:
|
||||
for msg in self._session.iter_messages():
|
||||
if not self._running:
|
||||
break
|
||||
yield msg.type, msg.data
|
||||
yield msg.type, msg.data, msg.flags
|
||||
|
||||
|
||||
class CaptureManager:
|
||||
@@ -103,9 +103,9 @@ class CaptureManager:
|
||||
return sid
|
||||
|
||||
def _capture_loop(self):
|
||||
for msg_type, data in self._backend.iter_messages():
|
||||
for msg_type, data, flags in self._backend.iter_messages():
|
||||
if self._session_id is None:
|
||||
break
|
||||
elapsed = round(time.monotonic() - self._start_time, 3)
|
||||
mid = self._db.insert_message(self._session_id, elapsed, msg_type, data)
|
||||
mid = self._db.insert_message(self._session_id, elapsed, msg_type, data, flags)
|
||||
self._latest_msg_id = mid
|
||||
Reference in new issue
Block a user