@@ -7,7 +7,7 @@ module Network.Wai.Handler.WebSockets
7 , runWebSockets
7 , runWebSockets
10−import Control.Exception (bracket)
10+import Control.Exception (bracket, tryJust)
11import Data.ByteString (ByteString)
11import Data.ByteString (ByteString)
12import qualified Data.ByteString.Char8 as BC
12import qualified Data.ByteString.Char8 as BC
13import qualified Data.ByteString.Lazy as BL
13import qualified Data.ByteString.Lazy as BL
@@ -95,8 +95,12 @@ runWebSockets :: WS.ConnectionOptions
95 -> IO ByteString
95 -> IO ByteString
96 -> (ByteString -> IO ())
96 -> (ByteString -> IO ())
98−runWebSockets opts req app src sink = bracket mkStream WS.close (app . pc)
98+runWebSockets opts req app src sink = bracket mkStream ensureClose (app . pc)
100+ ensureClose = tryJust onConnectionException . WS.close
101+ onConnectionException :: WS.ConnectionException -> Maybe ()
102+ onConnectionException WS.ConnectionClosed = Just ()
103+ onConnectionException _ = Nothing
100 mkStream =
104 mkStream =
101 WS.makeStream
105 WS.makeStream