diff --git a/src/Link/Client.hs b/src/Link/Client.hs index 5b77dc9..2df8b74 100644 --- a/src/Link/Client.hs +++ b/src/Link/Client.hs @@ -1,7 +1,7 @@ module Link.Client where import Control.Concurrent.STM -import Control.Concurrent hiding (forkFinally) +import Control.Concurrent import Control.Exception hiding (handle) import Control.Monad (void, forever, when, unless, forM_) import Data.Time (getCurrentTime, diffUTCTime) @@ -15,11 +15,6 @@ import qualified Data.Set as Set import Link.Protocol import Link.Types -forkFinally :: IO a -> (Either SomeException a -> IO ()) -> IO ThreadId -forkFinally action fun = - mask $ \restore -> - forkIO (do r <- try (restore action); fun r) - sendMessage :: Client -> Message -> STM () sendMessage Client {..} = writeTChan clientChan diff --git a/src/Link/Server.hs b/src/Link/Server.hs index 9fe7b68..d9bde59 100644 --- a/src/Link/Server.hs +++ b/src/Link/Server.hs @@ -40,10 +40,10 @@ connectClient server handle = do ok <- checkAddClient server user handle case ok of Nothing -> do - printToHandle handle $ formatMessage (NameInUse name) + printToHandle handle . formatMessage $ NameInUse name readName Just client -> do - sendResponse client $ Connected name + printToHandle handle . formatMessage $ Connected name runClient server client `finally` removeClient server user checkAddClient :: Server -> User -> Handle -> IO (Maybe Client)