1.9 KiB
Changelog
0.6.0 (unreleased)
-
client()now bounds each connect attempt at 10 seconds, the TLS handshake included, and reports one that expires as an ordinary connect failure, soreconnectretries it on its usual backoff. A connect previously waited the operating system out, around 130 s on Linux against a host that drops SYNs.connectTimeoutretunes the bound, andconnectTimeout: falserestores the old wait. -
Addresses, ids and every other text field on the wire are read and written as latin1. A
source_addrofKaffeépreviously reached the application asKaffei, because the codec wrote the octet and then masked bit 7 reading it back;destination_addr,system_id,message_id,service_typeand the C-Octet String TLVs were affected the same way. A character pastU+00FFin one of those fields is now refused, where it used to go out as its low octet — which for一,and most emoji is0x00, ending the field there.Check what you stored before you roll this out. Values your application persisted under 0.5.0 were read with bit 7 masked, so an address or a
message_idcarrying an octet above0x7Fis spelled differently now: a stored id will not match the receipt it belongs to, and a stored address will not match the sender it came from. Ids most SMSCs issue are digits or hex and are unaffected. -
A
U+0000inside a C-Octet String —source_addr,message_id,system_idand the rest — is refused. The peer reads such a field to its first NULL, so one sent inside the value shifted every mandatory field behind it whilecommand_lengthstill counted the whole string. An Octet String carries a NULL as before; its length octet is what ends it.
0.5.0
The TypeScript rewrite. What a 0.4.0 consumer has to change is in MIGRATION.md.