Commit Graph

20 Commits

Author SHA1 Message Date
lilleman e80b07167c Read the GSM 03.38 message class where the spec puts it (#95)
* Regression tests for the GSM 03.38 message class behind sms.flash

* Read the GSM 03.38 message class where the spec puts it, and refuse a flash message no alphabet can carry

* Keep the code span in the message-class decision on one line

* Stop offering the flash message class as an alphabet, and check the encoding option by name

* Settle every refusable send option in one check, and record what the review left open

* Say what the flash refusal and the encoding option actually do

* Keep the README off the alphabet whose long messages do not fit
2026-09-09 16:40:32 +02:00
lilleman bcbb042c1b Give server() consumers the onRequest hook the docs promise (#86)
* Regression tests for an onRequest hook on server()

* Compose the application's onRequest hook into server() past bind

* Document the server's onRequest hook and record the composition decision

* Pin that a re-bind and a pre-bind unbind never reach the hook, and that a non-function hook is refused at startup

* Keep every bind and all pre-bind traffic out of the application's hook

* Make the hook's published promises exact, and record the src layout deferral

* Trim the record to what the tests do not already forbid

* Pin that nothing answers a request whose hook failed

* Answer nothing for a request whose hook failed, on both surfaces alike

* State the hook's failure policy as it now behaves

* Name the request a failed handler left unanswered, and say what a wedged hook reports
2026-09-06 17:20:45 +02:00
lilleman 4194816d6b Document answeredOnArrival for client receivers and onRequest refusal (#85)
* Document answeredOnArrival for client receivers and onRequest refusal

* Apply stability review: correct the onRequest bind claim and teardown order
2026-09-06 06:30:18 +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 144567c294 Claim an error only where the state failed, and freeze the two state lists 2026-09-04 08:51:13 +02:00
lilleman 54493c12b2 Write a transient state as an intermediate delivery notification 2026-09-04 08:38:29 +02:00
lilleman 3eeb0b82c0 Give a message up only once every listener has, and only count a response the wire took 2026-09-02 12:36:01 +02:00
lilleman 3aadb64df8 Release a message's hold when the response goes out, or when its listener failed 2026-09-02 08:15:26 +02:00
lilleman e6250ef44e Drop a request whose link went while onRequest ran, and pin the wire in the test 2026-09-01 20:40:17 +02:00
lilleman c8d265d5fa Tie the refusal to the link, not to the hold, so a released message is refused too 2026-09-01 20:25:57 +02:00
lilleman 82a95593bd Refuse to answer a message whose link went, instead of reporting it delivered 2026-09-01 19:20:06 +02:00
lilleman f0327044b1 Cover the receipt refusal and the sweep that wakes a drain 2026-09-01 18:13:35 +02:00
lilleman 61985fb914 Say what a peer did with each receipt segment, and leave no drop unlogged 2026-09-01 17:59:37 +02:00
lilleman 67c0402def Bound the messages held for a shutdown, and report a partial receipt 2026-09-01 17:42:22 +02:00
lilleman 1e7e113bd7 Put a receipt's segments on the wire together, like a message's 2026-09-01 17:03:33 +02:00
lilleman 3bcea108e3 Wait out the messages the application holds before shutting a session down 2026-09-01 13:58:28 +02:00
lilleman 366fa26b1c Enforce bind direction, cap segments per message and pin the README examples 2026-08-27 14:07:42 +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