gameServer/ClientIO.hs
changeset 5037 1edc06d2247c
parent 5032 813554ab76b8
child 5059 68a5415ca8ea
--- a/gameServer/ClientIO.hs	Mon Mar 21 21:23:39 2011 +0300
+++ b/gameServer/ClientIO.hs	Mon Mar 21 21:38:44 2011 +0300
@@ -44,7 +44,10 @@
 
 clientRecvLoop :: Socket -> Chan CoreMessage -> ClientIndex -> IO ()
 clientRecvLoop s chan ci =
-        (listenLoop s chan ci >> return "Connection closed") `catch` (return . B.pack . show) >>= clientOff >> remove
+        (listenLoop s chan ci >> return "Connection closed")
+        `Exception.catch` (\(e :: ShutdownThreadException) -> return . B.pack . show $ e)
+        `Exception.catch` (\(e :: Exception.IOException) -> return . B.pack . show $ e)
+        >>= clientOff >> remove
     where
         clientOff msg = writeChan chan $ ClientMessage (ci, ["QUIT", msg])
         remove = writeChan chan $ Remove ci