diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-05-05 22:19:09 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-05-05 22:19:09 +0200 |
commit | afdd9112481853d037515dfb6142a2750858376a (patch) | |
tree | e9d0be96a5245bf415d3bbbb2ee2fd76ab2c9510 | |
parent | ea4693ce39bde7d8e5416f8129a36182852274be (diff) | |
parent | 88274b83a63a0bbe35c7dccd38ff509343a090ba (diff) |
Merge branch 'release-0.1'
-rw-r--r-- | src/Erebos/Network/Protocol.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/Erebos/Network/Protocol.hs b/src/Erebos/Network/Protocol.hs index c340503..ac38588 100644 --- a/src/Erebos/Network/Protocol.hs +++ b/src/Erebos/Network/Protocol.hs @@ -36,6 +36,7 @@ import Control.Applicative import Control.Concurrent import Control.Concurrent.Async import Control.Concurrent.STM +import Control.Exception import Control.Monad import Control.Monad.Except import Control.Monad.Trans @@ -512,8 +513,10 @@ erebosNetworkProtocol initialIdentity gLog gDataFlow gControlFlow = do race_ (waitTill next) waitForUpdate - race_ signalTimeouts $ forever $ join $ atomically $ - passUpIncoming gs <|> processIncoming gs <|> processOutgoing gs + race_ signalTimeouts $ forever $ do + io <- atomically $ do + passUpIncoming gs <|> processIncoming gs <|> processOutgoing gs + catch io $ \(e :: SomeException) -> atomically $ gLog $ "exception during network protocol handling: " <> show e getConnection :: GlobalState addr -> addr -> STM (Connection addr) |