Refuse a body the PDU's own data_coding cannot carry (#98)
* Regression tests for a body the PDU's own data_coding cannot carry * Refuse a body the PDU's own data_coding cannot carry, in the codec both send paths build through * Record the codec's body refusal, and drop two todo entries it and the interop run close * Regression tests for the aliased body TLV and the data_coding short_message settles * Find the body TLV by tag id, leave data_coding to the field that will be read, and correct the record * Record the two architecture findings this change does not close * Regression tests for a duplicated body tag and a short_message the wire never carries * Resolve every body TLV against the field that will be read, and move TLV writing to its table * Regression tests for a body only the TLV carries and an empty short_message * Let only octets the command writes settle the alphabet, and stop shadowing the TLV table
This commit is contained in:
@@ -577,6 +577,13 @@ same for the GSM 03.38 message class: `0` for the flash class `sms.flash` alread
|
||||
and `3` for the ME-, SIM- and TE-specific ones, and `undefined` where that `data_coding`'s coding
|
||||
group carries no class at all.
|
||||
|
||||
Building a PDU is the mirror: a string `short_message`, or a string `message_payload`, is encoded in
|
||||
the alphabet the PDU's own `data_coding` names, detected from the text where you name none, and a
|
||||
`data_coding` whose alphabet cannot carry one of its characters is refused, naming the character, its
|
||||
code point and where it is. A `Buffer` goes out exactly as given under any `data_coding`, which is
|
||||
how binary payloads, hand-built user data headers and deliberately malformed bodies are sent.
|
||||
`session.send()` and `session.sendReturn()` build through the same codec and refuse the same bodies.
|
||||
|
||||
Composing a message by hand takes the send-side pair: `unencodable(message, encoding)` gives
|
||||
`{ char, index }` for the first character an alphabet cannot carry and `undefined` where it carries
|
||||
them all, which is the check `sendSms()` makes before it encodes anything; `smppTime.encode(value)`
|
||||
|
||||
Reference in New Issue
Block a user