Refuse a single unreadable PDU instead of the whole link (#79)

* Regression tests: a PDU the codec cannot read costs that PDU, not the link

* Refuse a single unreadable PDU instead of the whole link

* smscsim interop asserts the first attempt gets every DLR

* Record the smscsim sequence number defect as fixed

* One framing rule and one response-command lookup, per the architecture review

* Apply the stability review's nits: honest sessionError docs and one link-survives assertion
This commit is contained in:
2026-09-05 21:00:52 +02:00
committed by GitHub
parent fec4fda082
commit ea42bc6d20
11 changed files with 511 additions and 141 deletions
+5
View File
@@ -106,6 +106,11 @@ are silently lost and bounce the link. Against a spec-conforming peer (small inc
numbers) it never fires, so it is plausibly why the suite's own dummy peers never caught it - which
is the whole reason this experiment exists.
**Fixed** in PR #79: only a framing error tears the link down now, any 32-bit `sequence_number` is
read and echoed, and `smscsim.test.ts`'s retry crutch is gone. A rerun of `./interop-tests/run.py
smscsim` shows 54 frames, `deliver_sm: 6` answered by `deliver_sm_resp: 6`, `bind_transceiver: 5`
(no reconnects), `malformed: 0`, `expert errors: 0`, 8/8 tests passing on their first attempt.
## Peer quirks
- No PDU validation (documented): a bad `interface_version` or malformed PDU is never rejected.