diff -r dbaf90a0fbe0 -r b235e520ea21 gameServer/NetRoutines.hs --- a/gameServer/NetRoutines.hs Sun Jan 26 00:09:50 2014 +0400 +++ b/gameServer/NetRoutines.hs Sun Jan 26 02:17:04 2014 +0400 @@ -6,13 +6,20 @@ import Data.Time import Control.Monad import Data.Unique +import qualified Codec.Binary.Base64 as Base64 +import qualified Data.ByteString as BW +import qualified Data.ByteString.Char8 as B +import qualified Control.Exception as E +import System.Entropy ----------------------------- import CoreTypes import Utils -import RoomsAndClients + acceptLoop :: Socket -> Chan CoreMessage -> IO () -acceptLoop servSock chan = forever $ +acceptLoop servSock chan = E.bracket openHandle closeHandle f + where + f ch = forever $ do (sock, sockAddr) <- Network.Socket.accept servSock @@ -23,6 +30,7 @@ sendChan' <- newChan uid <- newUnique + salt <- liftM (B.pack . Base64.encode . BW.unpack) $ hGetEntropy ch 16 let newClient = (ClientInfo @@ -33,6 +41,7 @@ currentTime "" "" + salt False False 0