summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-08-17 19:59:19 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-08-17 19:59:19 +0200
commitf2935af7f50b90b78094fa3cffce6ce8c9daf5e0 (patch)
treeb9e1def0a0919e83be49354910ceab65005c876a /src
parent2ce438155717e4aefecb869a397bc9f7df624add (diff)
Fix next peer check race in WebSocket thread
Diffstat (limited to 'src')
-rw-r--r--src/WebSocket.hs4
1 files changed, 3 insertions, 1 deletions
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