# 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