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).