Skip to content

v0.17.3 — stop() can no longer strand a dashboard session

Choose a tag to compare

@TheSmokeDev TheSmokeDev released this 10 Sep 04:21
· 135 commits to main since this release
082b0fc

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 in abortCascade() (or any other step) left the channel and peer
    open — the server kept listening even though the UI reset to idle, and a
    second stop() 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 through node
    with a throwing abortCascade() and asserts every wire is closed. (#130)