The rollup 479-486 over v1.0-build478. No server change: the server stays
srtp-build478.
-
csqtt 2.5 beside 2.1.9. A csqtt server's protocol generation is a profile
setting: an existing server and a plain link are 2.1.9, an encrypted
csqtt:// link makes a 2.5 server, a hand-made server is asked which it
is. A 2.5 server is reached with one AES-CTR + HMAC wrapper keyed by a
DTLS 1.2 handshake (the password's keys as the fallback), flow-sticky
bursts and fragments in place of CQF1 / FEC, and N streams under one
identity. The 2.5 client is our own, written from reading the server's
code for the wire facts; none of its code is used. -
The 2.5 engine on a phone: a stream's silence is counted as listening and
a suspension is a boundary with a window of repeated asks behind it (5 s
over a UDP relay leg, 10 s over TCP), so a sleeping phone replaces
nobody; every write is bounded, and a stall or a write into a connection
that is gone ends its stream; a path change ends a set-up under way and
starts every stream over; the server's restart notice is acted on; a
stream ends at once when the relay answers its permission refresh 400
(no allocation for the socket the packets now arrive from). The MTU of a
2.5 tunnel on a phone is 1400. -
csqtt 2.1.9: behind the server's restart notice nobody dials the server
that is about to go (a 1.5-s hold), the notice is heard in a
configuration wait, and the liveness rules run on shorter times until a
worker has heard the server that came back. -
csqtt over a UDP relay leg, both generations: a relay's close asks the
relay to confirm the deallocate, and a seat whose deallocate was answered
437 or not at all stays counted for an allocation's lifetime (600 s)
unless the process slept one through. A re-dial behind a changed NAT
mapping no longer draws a quota refusal from the allocation left behind. -
Relay health: a relay's silence (a timeout) is marked only by an answer
to an attempt that was in flight beside the silent one; an errno from the
path is judged as before, and ETIMEDOUT is silence. A Wi-Fi -> LTE switch
whose new path passes nothing for its first seconds no longer marks a
healthy own relay. The price: an own relay without a quota that drops
packets silently right behind a path change is left more slowly than on
478. -
Logging: the 2.5 engine says when every agreed stream is ready and what
the last one's set-up took (lease, connect, allocation, permission,
handshake, configuration); its counters come once a minute and at the
stop; the transport label names the csqtt generation.
Measured on the phone (csqtt 2.5, thirty streams): all ready within a
second of the engine's start on an established path, 53.8 Mbit/s both ways
(the server's per-stream cap); a Wi-Fi -> LTE switch 1.2-1.4 s over a TCP
relay leg and about 4 s over UDP (the relay's first answer on a fresh LTE
path); behind a sleep that changed the UDP mapping every stream back 2.2 s
after the wake, with no quota refusal.