diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-11 15:45:47 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-11 15:45:47 +0200 |
| commit | 8b02ae3a8d64dedb198284ac743378dd38ca31c4 (patch) | |
| tree | e23bb6227bcb8565a4c4b4ba280a93c7fb2cdec0 /packages/meshbay-node/src/meshbay_node/transport | |
| parent | 3ee7f817d532208df1d95ecd86def12e5bd53a18 (diff) | |
| download | meshbay-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/meshbay-node/src/meshbay_node/transport')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py | 4 |
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() |