Repository navigation
v0.17.3 — stop() can no longer strand a dashboard session
One fix, for the dashboard tab. Ending a session could strand it: if any
teardown step threw, the rest of stop() was skipped, the UI reset to
idle, and the server kept listening, so the next session started with the
previous one still live. Every teardown step now owns its own failure and a
repeated stop() is a no-op. Found and fixed by
@JakeStevenson while building a mobile
surface on the dashboard transport, the second outside fix to a live lane.
Fixed
- The dashboard transport's
stop()is now idempotent and every teardown
step is guarded, so a throw in one can never skip the rest. Previously a
throw inabortCascade()(or any other step) left the channel and peer
open — the server kept listening even though the UI reset to idle, and a
secondstop()could throw again. Each step now nulls its reference and
swallows its own failure, so teardown always completes and a repeated
call is a no-op. Regression test drives the real bundle throughnode
with a throwingabortCascade()and asserts every wire is closed. (#130)