Skip to content

Commit

Permalink
Close connection & handle EOF
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchellwrosen committed Sep 4, 2016
1 parent 72d70dd commit 408d551
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions Wuss.hs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module Wuss
) where

import qualified Control.Applicative as Applicative
import qualified Control.Exception as Exception
import qualified Data.Bool as Bool
import qualified Data.ByteString as StrictBytes
import qualified Data.ByteString.Lazy as LazyBytes
Expand All @@ -57,6 +58,7 @@ import qualified Network.Socket as Socket
import qualified Network.WebSockets as WebSockets
import qualified Network.WebSockets.Stream as Stream
import qualified System.IO as IO
import qualified System.IO.Error as IO.Error


{- |
Expand Down Expand Up @@ -158,9 +160,13 @@ runSecureClientWithConfig
-> IO.IO a
runSecureClientWithConfig host port path config options headers app = do
context <- Connection.initConnectionContext
connection <- Connection.connectTo context (connectionParams host port)
stream <- Stream.makeStream (reader config connection) (writer connection)
WebSockets.runClientWithStream stream host path options headers app
Exception.bracket
(Connection.connectTo context (connectionParams host port))
Connection.connectionClose
(\connection -> do
stream <-
Stream.makeStream (reader config connection) (writer connection)
WebSockets.runClientWithStream stream host path options headers app)


connectionParams
Expand Down Expand Up @@ -190,9 +196,14 @@ reader
:: Config
-> Connection.Connection
-> IO.IO (Maybe.Maybe StrictBytes.ByteString)
reader config connection = do
chunk <- (connectionGet config) connection
Applicative.pure (Maybe.Just chunk)
reader config connection =
IO.Error.catchIOError (do
chunk <- (connectionGet config) connection
Applicative.pure (Maybe.Just chunk))
(\e ->
if IO.Error.isEOFError e
then Applicative.pure Maybe.Nothing
else Exception.throwIO e)


writer
Expand Down

0 comments on commit 408d551

Please sign in to comment.