@@ -7,7 +7,7 @@ module Network.Wai.Handler.WebSockets
77 , runWebSockets
88 ) where
99
10−import Control.Exception (bracket)
10+import Control.Exception (bracket, tryJust)
1111import Data.ByteString (ByteString)
1212import qualified Data.ByteString.Char8 as BC
1313import qualified Data.ByteString.Lazy as BL
@@ -95,8 +95,12 @@ runWebSockets :: WS.ConnectionOptions
9595 -> IO ByteString
9696 -> (ByteString -> IO ())
9797 -> IO a
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)
9999 where
100+ ensureClose = tryJust onConnectionException . WS.close
101+ onConnectionException :: WS.ConnectionException -> Maybe ()
102+ onConnectionException WS.ConnectionClosed = Just ()
103+ onConnectionException _ = Nothing
100104 mkStream =
101105 WS.makeStream
102106 (do