aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-24 16:45:29 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-24 16:45:29 +0200
commit92ea222b7aca6a3eb5f04330f0af6755e6e434e3 (patch)
treec66b6560377c39f882bf1618b8b85853b1248171 /packages/meshbay-node/src/meshbay_node/transport
parentc30b3233c725fcd60feb4bec79230b434ef0f7f8 (diff)
downloadmeshbay-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/transport')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py7
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")