# HG changeset patch # User unc0rr # Date 1305569099 -14400 # Node ID eaffb02f005326016d912412454a3e5571166114 # Parent 8ebf920144470a0a3ce362dc5e3712b057f9643b Don't perform RestartServer action when already did it once diff -r 8ebf92014447 -r eaffb02f0053 gameServer/Actions.hs --- a/gameServer/Actions.hs Mon May 16 22:03:14 2011 +0400 +++ b/gameServer/Actions.hs Mon May 16 22:04:59 2011 +0400 @@ -468,22 +468,24 @@ processAction StatsAction = do si <- gets serverInfo when (not $ shutdownPending si) $ do - rnc <- gets roomsClients - (roomsNum, clientsNum) <- io $ withRoomsAndClients rnc st - io $ writeChan (dbQueries si) $ SendStats clientsNum (roomsNum - 1) + rnc <- gets roomsClients + (roomsNum, clientsNum) <- io $ withRoomsAndClients rnc st + io $ writeChan (dbQueries si) $ SendStats clientsNum (roomsNum - 1) where st irnc = (length $ allRooms irnc, length $ allClients irnc) -processAction RestartServer = do - sock <- gets (fromJust . serverSocket . serverInfo) - args <- gets (runArgs . serverInfo) - io $ do - noticeM "Core" "Closing listening socket" - sClose sock - noticeM "Core" "Spawning new server" - _ <- createProcess (proc "./hedgewars-server" args) - return () - processAction $ ModifyServerInfo (\s -> s{shutdownPending=True}) +processAction RestartServer = do + sp <- gets (shutdownPending . serverInfo) + when (not sp) $ do + sock <- gets (fromJust . serverSocket . serverInfo) + args <- gets (runArgs . serverInfo) + io $ do + noticeM "Core" "Closing listening socket" + sClose sock + noticeM "Core" "Spawning new server" + _ <- createProcess (proc "./hedgewars-server" args) + return () + processAction $ ModifyServerInfo (\s -> s{shutdownPending = True}) processAction SaveReplay = do ri <- clientRoomA