# HG changeset patch # User unc0rr # Date 1253105307 0 # Node ID 959da8402cacdda060056d73ffb3dfd439c542b0 # Parent 603965eca22bfc5dc05496d0fd4e31fc7b201ef9 Don't store keepalive messages in game server spectators buffer diff -r 603965eca22b -r 959da8402cac gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Sun Sep 13 17:51:25 2009 +0000 +++ b/gameServer/HWProtoInRoomState.hs Wed Sep 16 12:48:27 2009 +0000 @@ -140,13 +140,13 @@ handleCmd_inRoom clID clients rooms ["EM", msg] = - if (teamsInGame client > 0) && (isLegalNetCommand msg) then - [ModifyRoom (\r -> r{roundMsgs = roundMsgs r |> msg}), - AnswerOthersInRoom ["EM", msg]] + if (teamsInGame client > 0) && isLegal then + (AnswerOthersInRoom ["EM", msg]) : [ModifyRoom (\r -> r{roundMsgs = roundMsgs r |> msg}) | not isKeepAlive] else [] where client = clients IntMap.! clID + (isLegal, isKeepAlive) = checkNetCmd msg handleCmd_inRoom clID clients rooms ["ROUNDFINISHED"] = if isMaster client then diff -r 603965eca22b -r 959da8402cac gameServer/Utils.hs --- a/gameServer/Utils.hs Sun Sep 13 17:51:25 2009 +0000 +++ b/gameServer/Utils.hs Wed Sep 16 12:48:27 2009 +0000 @@ -36,13 +36,13 @@ removeLength (x:xs) = if length xs == fromIntegral x then Just xs else Nothing removeLength _ = Nothing -isLegalNetCommand :: String -> Bool -isLegalNetCommand msg = test decoded +checkNetCmd :: String -> (Bool, Bool) +checkNetCmd msg = check decoded where decoded = fromEngineMsg msg - test Nothing = False - test (Just (m:ms)) = m `Set.member` legalMessages - test _ = False + check Nothing = (False, False) + check (Just (m:ms)) = (m `Set.member` legalMessages, m == '+') + check _ = (False, False) legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sFNpPwtghb12345" ++ slotMessages slotMessages = "\128\129\130\131\132\133\134\135\136\137\138"