lilleman
cda8e9b112
Relay a parsed PDU's TLVs as they are, refuse only a tagId that disagrees with its key, and refuse a number for an octet TLV
Mirror / push (push) Has been cancelled
Test / lint (pull_request) Successful in 22s
Test / test (18) (pull_request) Successful in 31s
Test / test (22) (pull_request) Successful in 39s
Test / test (24) (pull_request) Successful in 31s
Test / test (26) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 36s
2026-09-27 15:29:31 +02:00
lilleman
58e622143b
Drop an assertion that always passes, and reflow a decision
Mirror / push (push) Has been cancelled
Test / lint (pull_request) Successful in 27s
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 39s
Test / test (22) (pull_request) Successful in 31s
Test / test (24) (pull_request) Successful in 38s
Test / test (26) (pull_request) Successful in 31s
2026-09-27 15:27:25 +02:00
lilleman
138464ad0f
Refuse a TLV input that is no { tagValue }, and the alternate tag names, keep numbers out of octet TLVs, and pin that a TLV is copied off its chunk
Mirror / push (push) Has been cancelled
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 30s
Test / lint (pull_request) Successful in 22s
Test / test (22) (pull_request) Successful in 39s
Test / test (24) (pull_request) Successful in 31s
Test / test (26) (pull_request) Successful in 32s
2026-09-27 15:25:49 +02:00
lilleman
939eda7269
Key a TLV input like the read side, drop tagId, copy TLV octets at parse, and export only Tlvs, TlvInputs and Tlv
Mirror / push (push) Has been cancelled
Test / lint (pull_request) Successful in 29s
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 31s
Test / test (22) (pull_request) Successful in 37s
Test / test (24) (pull_request) Successful in 31s
Test / test (26) (pull_request) Successful in 38s
2026-09-27 15:18:08 +02:00
lilleman
75d4794522
Type each known TLV's value by its tag, on read and on write
Test / lint (pull_request) Successful in 32s
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 30s
Test / test (22) (pull_request) Successful in 31s
Test / test (24) (pull_request) Successful in 38s
Test / test (26) (pull_request) Successful in 30s
Mirror / push (push) Successful in 4s
2026-09-27 15:12:09 +02:00
lilleman
10877c9f5f
Read every occurrence of a repeatable TLV, and drop the unread tlvMap
Test / lint (pull_request) Successful in 20s
Test / test (18) (pull_request) Successful in 30s
Test / test (20) (pull_request) Successful in 28s
Test / test (22) (pull_request) Successful in 30s
Test / test (24) (pull_request) Successful in 29s
Mirror / push (push) Successful in 4s
Test / test (26) (pull_request) Successful in 30s
2026-09-24 00:13:38 +02:00
lilleman
93d794e61b
Say what is refused, and cover the two wire types the loop missed
2026-09-21 10:29:42 +02:00
lilleman
63e06856f2
Say what coercion would put on the wire, in the tense the test now holds
Mirror / push (push) Successful in 5s
Test / lint (pull_request) Successful in 23s
Test / test (18) (pull_request) Successful in 32s
Test / test (20) (pull_request) Successful in 29s
Test / test (22) (pull_request) Successful in 37s
Test / test (24) (pull_request) Successful in 37s
Test / test (26) (pull_request) Successful in 29s
2026-09-21 10:23:15 +02:00
lilleman
e7e71ca9bd
Refuse a non-finite number where a text field coerces one
Mirror / push (push) Successful in 4s
Test / lint (pull_request) Successful in 21s
Test / test (18) (pull_request) Successful in 36s
Test / test (20) (pull_request) Successful in 30s
Test / test (22) (pull_request) Successful in 30s
Test / test (24) (pull_request) Successful in 29s
Test / test (26) (pull_request) Successful in 30s
2026-09-21 10:22:41 +02:00
lilleman
f870b7530f
Cover the guarded address writers, and cut what the code already says
Mirror / push (push) Successful in 5s
Test / lint (pull_request) Successful in 22s
Test / test (18) (pull_request) Successful in 29s
Test / test (20) (pull_request) Successful in 30s
Test / test (22) (pull_request) Successful in 37s
Test / test (24) (pull_request) Successful in 29s
Test / test (26) (pull_request) Successful in 30s
2026-09-21 08:08:42 +02:00
lilleman
c1e0407942
Refuse a NULL inside a C-Octet String, which ends the field on the peer
Mirror / push (push) Successful in 4s
Test / lint (pull_request) Successful in 21s
Test / test (18) (pull_request) Successful in 29s
Test / test (20) (pull_request) Successful in 29s
Test / test (22) (pull_request) Successful in 31s
Test / test (24) (pull_request) Successful in 35s
Test / test (26) (pull_request) Successful in 30s
2026-09-21 07:59:08 +02:00
lilleman
7db242e375
Read and write every text field on the wire as latin1
Mirror / push (push) Successful in 5s
Test / lint (pull_request) Successful in 22s
Test / test (18) (pull_request) Successful in 29s
Test / test (20) (pull_request) Successful in 30s
Test / test (22) (pull_request) Successful in 30s
Test / test (24) (pull_request) Successful in 29s
Test / test (26) (pull_request) Successful in 30s
2026-09-21 07:54:25 +02:00
lilleman
ca1a7473ed
Declare the alphabet a GSM message is actually written in ( #100 )
...
* Regression tests for the alphabet a GSM message declares
* Declare the alphabet a GSM message is actually written in
* Reflow the composing-by-hand paragraph
* Drop the ASCII alias SMPP's flat table shares with the option's own
* Bound the receipt test's wait and tighten the notes around it
2026-09-09 21:30:55 +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
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
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
435fa42708
Decompose the codec, document the session surface and record the review decisions
2026-08-26 22:59:39 +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
649e93cdde
Add the PDU codec with bounds-checked parsing and typed encoding
2026-08-25 16:28:59 +02:00