github anton48/vk-turn-proxy-ios v1.0-build486
v1.0-build486: csqtt 2.5 servers, a relay's silence judged by an overlapping answer, held seats for csqtt over UDP

one hour ago

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.

Don't miss a new vk-turn-proxy-ios release

NewReleases is sending notifications on new releases.