diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-24 16:45:29 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-24 16:45:29 +0200 |
| commit | 92ea222b7aca6a3eb5f04330f0af6755e6e434e3 (patch) | |
| tree | c66b6560377c39f882bf1618b8b85853b1248171 /packages/meshbay-node/src/meshbay_node | |
| parent | c30b3233c725fcd60feb4bec79230b434ef0f7f8 (diff) | |
| download | meshbay-92ea222b7aca6a3eb5f04330f0af6755e6e434e3.tar.gz | |
fix(node): a connection that ends leaves its group's peer set
connectionstatechange dropped a closed or failed session from the
transport and stopped its tasks, but only close() took it out of the
group's peer set, and nothing on that path called it. Every broadcast
then went to closed channels, and each reconnect left a dead session
held until restart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py index b877e4d..af90dfc 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py @@ -7347,6 +7347,13 @@ class WebRTCTransport: # two slots the whole time. Closing the viewer, the tab or # the browser all arrive here, so this is the one place # that covers every way of walking away. + # + # And the group's peer set forgets it too, as close() does: + # otherwise every later broadcast to the group is written + # to a closed channel, and every reconnect leaves one more + # dead session held until the node restarts. + if gone._user_id: + gone._unregister_peer() await gone.shutdown_tasks() offer = RTCSessionDescription(sdp=offer_sdp, type="offer") |