Commit Graph

13 Commits

Author SHA1 Message Date
lilleman d21df7c04b Plan one product-owner pass over the surface the interoperability fixes moved 2026-09-06 17:24:50 +02:00
lilleman 0d1da1dc87 Run jsmpp and Cloudhopper against our server: sar_* fragmentation confirmed and a truncated TLV tail silently accepted 2026-09-06 07:00:45 +02:00
lilleman 184d1dc7af Read a body from message_payload and accept data_sm (#84)
* Regression tests for a body in message_payload and for data_sm

* Read a body from message_payload and accept data_sm

* Assert the fixed message_payload and data_sm behaviour against Jasmin

* Record the message_payload and data_sm fixes in the Jasmin findings

* Read an inbound data_sm as the direction it travelled, and export messageOctets

* Refuse a segment with the code its stand-in command defines

* Name the stand-in the refusal status is read from
2026-09-06 05:59:27 +02:00
lilleman 5b7b563dc2 Answer every segment of an inbound concatenated message as it arrives (#83)
* Regression tests for answering every inbound segment as it arrives

* Answer every segment of an inbound concatenated message as it arrives

* Record the segment-by-segment answer in AGENTS.md and README

* Regression tests for an empty message_id on deliver_sm_resp

* Answer a deliver_sm with the empty message_id SMPP 3.4 makes it

* Record Jasmin's refusal of a deliver_sm_resp message_id

* Mark the Jasmin multipart deadlock fixed

* Regression tests for the architecture review's findings

* Give the segment id notation an owner, and every segment a status

* Correct what the ids reach and what a lost group tells the application

* Regression tests for a group lost to its own octet overrun

* Report a group lost to its own overrun, and refuse by the command it arrived on

* Keep the docs true about what a segment is answered with

* Count only the answered segments of a group lost to an overrun

* Report only what a lost group cost, and say which cap bit
2026-09-06 04:16:11 +02:00
lilleman 66b49ebfb3 Run Jasmin in both directions: message_payload, data_sm and a multipart deadlock confirmed against a production gateway 2026-09-06 02:24:32 +02:00
lilleman 45d2f5548e Read a delivery receipt's body as the octets that arrived (#81)
* Regression tests for a receipt body read under a data_coding it is not written in

* Read a delivery receipt's body as the octets that arrived, not by its data_coding

* Assert SMPPSim's UCS2 receipt body parses like every other segment's

* Record the receipt-body defect as fixed

* Retain a multipart segment's octets once, not twice

* Sort the new type import into its file's order
2026-09-05 22:37:05 +02:00
lilleman ea42bc6d20 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
2026-09-05 21:00:52 +02:00
lilleman fec4fda082 Run SMPPSim 2.6.11 as the SMSC with nine fault-injection variants: 25 scenarios pass, two defects recorded 2026-09-05 20:08:39 +02:00
lilleman 05ea90afeb Run Kannel 1.4.5 as the ESME against our server: 21 scenarios pass, no defects found 2026-09-05 20:03:58 +02:00
lilleman 9c4939f5cf Fix every defect a phase finds before the next phase runs 2026-09-05 18:48:57 +02:00
lilleman 1723a0381c Add the interoperability harness and the smscsim experiment, which confirms the one-bad-PDU link drop 2026-09-05 18:40:56 +02:00
lilleman 7d855cfa5d Set the conventions the interoperability experiments run and record under 2026-09-05 17:53:33 +02:00
lilleman 8a565cf557 Plan the interoperability tests against real-world SMPP peers before 1.0.0 2026-09-05 17:31:02 +02:00