# HG changeset patch
# User unc0rr
# Date 1316677479 -14400
# Node ID 23407ecb182634ef6364de8571f02d6777e6ee7f
# Parent  d08565e2a7d7c6d6847f216360342db284cf7d9a
My best guess for issue #285 is send thread being stuck at sendAll function, so I move client removing function before sendAll

diff -r d08565e2a7d7 -r 23407ecb1826 gameServer/ClientIO.hs
--- a/gameServer/ClientIO.hs	Wed Sep 21 22:03:31 2011 -0400
+++ b/gameServer/ClientIO.hs	Thu Sep 22 11:44:39 2011 +0400
@@ -58,6 +58,10 @@
 clientSendLoop :: Socket -> ThreadId -> Chan [B.ByteString] -> ClientIndex -> IO ()
 clientSendLoop s tId chan ci = do
     answer <- readChan chan
+
+    when (isQuit answer) $
+        killReciever . B.unpack $ quitMessage answer
+
     Exception.handle
         (\(e :: Exception.IOException) -> unless (isQuit answer) . killReciever $ show e) $
             sendAll s $ B.unlines answer `B.snoc` '\n'
@@ -65,7 +69,6 @@
     if isQuit answer then
         do
         Exception.handle (\(_ :: Exception.IOException) -> putStrLn "error on sClose") $ sClose s
-        killReciever . B.unpack $ quitMessage answer
         else
         clientSendLoop s tId chan ci