lock before iterating web sockets

This commit is contained in:
Blake Blackshear 2021-06-12 10:18:13 -05:00
parent f2d1f7b00f
commit a7ecc2af4b

View File

@ -68,9 +68,19 @@ class BroadcastThread(threading.Thread):
while True:
buf = self.converter.read(65536)
if buf:
for ws in self.websocket_server.manager:
if ws.environ["PATH_INFO"].endswith(self.camera):
manager = self.websocket_server.manager
with manager.lock:
websockets = manager.websockets.copy()
ws_iter = iter(websockets.values())
for ws in ws_iter:
if not ws.terminated and ws.environ["PATH_INFO"].endswith(
self.camera
):
try:
ws.send(buf, binary=True)
except:
pass
elif self.converter.process.poll() is not None:
break