summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-11 15:45:47 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-11 15:45:47 +0200
commit8b02ae3a8d64dedb198284ac743378dd38ca31c4 (patch)
treee23bb6227bcb8565a4c4b4ba280a93c7fb2cdec0 /packages
parent3ee7f817d532208df1d95ecd86def12e5bd53a18 (diff)
downloadmeshbay-8b02ae3a8d64dedb198284ac743378dd38ca31c4.tar.gz
fix(node): iterate dict copies in WebRTC peer broadcast and close_all
Concurrent peer disconnects could mutate _peers/_sessions during iteration, causing RuntimeError: dictionary changed size during iteration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'packages')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py4
1 files changed, 2 insertions, 2 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 07ceed3..6231310 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -288,7 +288,7 @@ class WebRTCPeerSession:
"thread_id": msg.get("thread_id"),
"timestamp": __import__("time").time(),
}
- for uid, session in peers.items():
+ for uid, session in list(peers.items()):
if uid != self._user_id and session is not self:
try:
session._send(broadcast)
@@ -491,7 +491,7 @@ class WebRTCTransport:
await session.close()
async def close_all(self) -> None:
- for session in self._sessions.values():
+ for session in list(self._sessions.values()):
await session.close()
self._sessions.clear()