From f2935af7f50b90b78094fa3cffce6ce8c9daf5e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 17 Aug 2026 19:59:19 +0200 Subject: Fix next peer check race in WebSocket thread --- src/WebSocket.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/WebSocket.hs b/src/WebSocket.hs index 685ed90..e00fbe8 100644 --- a/src/WebSocket.hs +++ b/src/WebSocket.hs @@ -7,6 +7,7 @@ module WebSocket ( ) where import Control.Concurrent +import Control.Concurrent.STM import Control.Monad import Data.ByteString (ByteString) @@ -83,8 +84,9 @@ startDefaultWebSocketConnections server = do msg <- receiveMessage conn receivedFromCustomAddress server conn msg + pchan <- getNextPeerChangeChan server void $ forkIO $ void $ forever $ do - peer <- getNextPeerChange server + peer <- atomically $ readTChan pchan isPeerDropped peer >>= \case True -> do wsPeer <- takeMVar peerVar -- cgit v1.2.3