Repository navigation
Keep the live view connect bound armed until ICE connects - #427
robertjamesprior wants to merge 1 commit into
Conversation
`oniceconnectionstatechange` cleared the connect bound on `checking`, but `onConnected` — and `KERNEL_CONNECTED` — wait for `connected`. A peer that reached `checking` and then stalled had no timer watching and reported nothing to the parent frame, which is the silent black frame this branch exists to remove. Leaving the bound armed costs nothing on the healthy path: ICE reaches `connected` tens of milliseconds after `checking`, inside the same 2s budget, and `onConnected` clears it either way.
|
Folded into #417, which is now the single PR for the whole connect bound. Cherry-picked as Why folded rather than landed second: this PR's base was #417's tip, and this repo only allows squash merges, so merging #417 first would have left this diff carrying #417's commits until someone rebased it. Both also touch the same function that Sayan's outstanding #417 review is about, so one review covers both. Verified on the combined head: Branch |
Summary
oniceconnectionstatechangecleared the connect bound on ICEchecking, butonConnected— andKERNEL_CONNECTED— wait forconnected. So a peer that reachedcheckingand then stalled had no timer watching and reported nothing: the silent black frame #417 exists to remove, in the one stretch of the connect the bounds don't cover.Leaving the bound armed costs nothing on the healthy path. ICE reaches
connectedtens of milliseconds afterchecking, inside the same 2s media budget, andonConnectedclears it either way.reasonstaysmedia, whose meaning widens to "the peer never got past ICEchecking".Stacked on #417 — retarget to
mainonce that lands.Not in this PR: the mid-session stall, where media drops after playback started. That needs a frame-progress signal, and the client's peer path has no access to the media element — it lives in
components/video.vue— so it belongs in the video layer rather thanbase.ts. Separate change.Testing
bun test tests: 39 pass, 0 fail.tsc --noEmitclean. Two tests replace one:checkingleaves the bound armed and reportsmediawhen it stalls, andconnectedclears it.