github anton48/vk-turn-proxy-ios v1.0-build478
v1.0-build478: the pace by relay, a dead relay's sessions ended at once, the replacement sentinel

37 minutes ago

The rollup 472-478 over v1.0-build471. Paired with the server srtp-build478;
with an older server the new declarations are dropped harmlessly and the
client behaves as 471 did.

  • A missing Wi-Fi SSID is unknown, not another network: asked again once,
    then the last known SSID carried on a satisfied Wi-Fi path (a wake whose
    path event had no SSID restarted every healthy session twice). A path
    event has a generation: a late SSID answer or retry for a superseded event
    is dropped; a quick Wi-Fi loss and restore on one SSID is judged at once.

  • A relay is marked unreachable on another address's or VK's answer only,
    never its own; a relay's own answer inside 2 s before the attempt voids
    the verdict; both session kinds join their ping goroutine before they
    return.

  • The pace is the relay's: the override entry's fourth field,
    host:port:quota:pace (KiB/s, 0 = no pacer), sets the uplink bucket of
    every connection on that relay and is declared to the server behind the
    hello and every tick's ping, so a server >= srtp-build478 paces the
    downlink of that connection at the same number (an own relay without a
    quota runs unpaced both ways; VK's relays keep the pacer). One strict
    parser for an override entry on both sides, a refused entry dropped.
    tools/turn-relay moved to the server repository.

  • A relay marked unreachable ends every live session still seated on it at
    once; each re-dials the next address. The forty sessions are back within
    about a second of the mark instead of 60-140 s of per-connection kernel
    give-ups. Every hand-out is stamped under the pool's lock, so a notice
    about a mark never ends a session handed its relay after the mark.

  • The replacement sentinel: a new session names, behind the hello and every
    tick's ping, the connection it replaces, with the session's own
    generation; a server >= srtp-build478 ends the dead predecessor at once, so
    the downlink after a failover goes to live sessions only (no deaf window,
    no download crawling behind dead members). Every session has a serial and
    its registration is its own to write and clear.

Measured on the phone: the own relay black-holed mid-session, one mark 23 s
after the block (the kernel's give-up), 38 sessions ended and all forty back
within a second on VK's relays; the first download after the failover at
VK's pace from its start (471: minutes of kernel give-ups and a deaf or
crawling tunnel after them).

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

NewReleases is sending notifications on new releases.