Commit Graph

15 Commits

Author SHA1 Message Date
lilleman 83176f53b0 Let sendSms() name the esm_class messaging mode (#92)
* Regression tests for the messaging mode on sendSms()

* Let sendSms() name the esm_class messaging mode

* Document the messaging mode option and the decision behind it

* Name the constants move for migrating consumers and share the refusal's value naming

* Cover the messaging-mode refusals through submitSms()

* Refuse transaction mode and a report under datagram mode on sendSms()

* Narrow the mode checker and name the default mode once
2026-09-08 17:30:20 +02:00
lilleman 039951e69b Refuse a PDU whose optional parameters do not end on command_length (#87)
* Regression tests for a truncated TLV tail refused rather than accepted

* Refuse a PDU whose optional parameters do not end on command_length

* Assert the bare TLV header refusal against jsmpp instead of recording it as a defect

* Note the truncated TLV tail defect as fixed in the java-client findings

* Derive the padding position, share the bare TLV fixture and trim the decision record

* Regression tests for a PDU whose trailing C-Octet String a peer left out

* An absent trailing C-Octet String consumes no octet, so a bodyless PDU still parses

* Bound the TLV loop by the buffer it was given rather than a second spelling of its length

* Answer the stability review's questions in the record and pin the array contract
2026-09-06 18:01:35 +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 cf315737b7 Keep the body scrape for reserved message types and an empty receipt id marker 2026-08-27 16:32:01 +02:00
lilleman c9c3121d40 Give the esm_class bits one owner beside the constants 2026-08-27 16:18:05 +02:00
lilleman b9f77ec969 Decode a receipt body before reading it and stop an unnameable state TLV overriding it 2026-08-27 16:08:54 +02:00
lilleman 8a182604b7 Address the CodeRabbit review: inbound SMS, binary payloads and untrusted input 2026-08-27 11:52:43 +02:00
lilleman 884afdb87b Stop a thrown listener escaping, bound what a peer can pin, and drop the body from failure responses 2026-08-27 10:55:34 +02:00
lilleman 5af75a3c57 Close the stability findings and settle the sendResp, sendSms and unbind contracts 2026-08-27 00:17:48 +02:00
lilleman 6d842a8539 Split the session, gate optional parameters on the peer version, own the SMPP version in defs 2026-08-26 22:41:28 +02:00
lilleman fd2f98464f Add session, client and server with the promise result API 2026-08-25 16:46:32 +02:00
lilleman 649e93cdde Add the PDU codec with bounds-checked parsing and typed encoding 2026-08-25 16:28:59 +02:00
lilleman 4299a8cc35 Add TLV and command tables with per-command parameter types 2026-08-25 16:19:06 +02:00
lilleman 854c89f609 Port SMPP definitions: constants, errors, encodings and wire types 2026-08-25 16:07:34 +02:00
lilleman 16c935bb18 Scaffold ESM TypeScript rewrite as @larvit/smpp 2026-08-25 16:02:27 +02:00