gameServer/ClientIO.hs
branchserver_refactor
changeset 4579 4e61c2a42121
parent 4295 1f5604cd99be
child 4585 6e747aef012f
--- a/gameServer/ClientIO.hs	Mon Jan 10 18:29:43 2011 +0300
+++ b/gameServer/ClientIO.hs	Mon Jan 10 18:57:44 2011 +0300
@@ -57,17 +57,19 @@
 
 
 
-clientSendLoop :: Socket -> Chan [B.ByteString] -> ClientIndex -> IO ()
-clientSendLoop s chan ci = do
+clientSendLoop :: Socket -> ThreadId -> Chan [B.ByteString] -> ClientIndex -> IO ()
+clientSendLoop s tId chan ci = do
     answer <- readChan chan
     Exception.handle
         (\(e :: Exception.IOException) -> when (not $ isQuit answer) $ sendQuit e) $ do
             sendAll s $ (B.unlines answer) `B.append` (B.singleton '\n')
 
     if (isQuit answer) then
+        do
+        killThread tId
         Exception.handle (\(_ :: Exception.IOException) -> putStrLn "error on sClose") $ sClose s
         else
-        clientSendLoop s chan ci
+        clientSendLoop s tId chan ci
 
     where
         --sendQuit e = writeChan coreChan $ ClientMessage (ci, ["QUIT", B.pack $ show e])