# HG changeset patch # User unc0rr # Date 1225839396 0 # Node ID b3b28e99570ff50778353f6d60bdcf0db5e50bd7 # Parent bab5650fc8947afc0c2d9e548700827cc1be43ad Disconnect clients on BYE message diff -r bab5650fc894 -r b3b28e99570f netserver/hedgewars-server.hs --- a/netserver/hedgewars-server.hs Tue Nov 04 22:49:13 2008 +0000 +++ b/netserver/hedgewars-server.hs Tue Nov 04 22:56:36 2008 +0000 @@ -57,7 +57,7 @@ sendAnswers [] _ clients _ = return clients sendAnswers ((handlesFunc, answer):answers) client clients rooms = do let recipients = handlesFunc client clients rooms - unless (null recipients) $ putStrLn ("< " ++ (show answer)) + --unless (null recipients) $ putStrLn ("< " ++ (show answer)) clHandles' <- forM recipients $ \ch -> Control.Exception.handle @@ -73,7 +73,9 @@ hFlush ch if head answer == "BYE" then return [ch] else return [] - let mclients = remove clients $ concat clHandles' + let outHandles = concat clHandles' + mapM_ (\ch -> Control.Exception.handle (const $ putStrLn "error on hClose") (hClose ch)) outHandles + let mclients = remove clients outHandles sendAnswers answers client mclients rooms where