diff options
| author | oy <Tom_Adams@web.de> | 2015-03-19 09:57:47 +0100 |
|---|---|---|
| committer | Learath <learath2@gmail.com> | 2018-08-20 15:27:59 +0300 |
| commit | 3f3abebebf20e8901376b929e2afcc6bdb404a3b (patch) | |
| tree | 6e8f5c8c46f73487d62fa3e12ff89e969d0ea8e8 /src/engine/client/client.cpp | |
| parent | fc6d8b4d154049e6e3d6df9039669580f8ff747c (diff) | |
| download | zcatch-3f3abebebf20e8901376b929e2afcc6bdb404a3b.tar.gz zcatch-3f3abebebf20e8901376b929e2afcc6bdb404a3b.zip | |
force vital check on essential cl/srv messages and added additional sequence checking
Diffstat (limited to 'src/engine/client/client.cpp')
| -rw-r--r-- | src/engine/client/client.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 30f92eb0..b58b1b5a 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -1027,7 +1027,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) if(Sys) { // system message - if(Msg == NETMSG_MAP_CHANGE) + if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_MAP_CHANGE) { const char *pMap = Unpacker.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES); int MapCrc = Unpacker.GetInt(); @@ -1090,7 +1090,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) } } } - else if(Msg == NETMSG_MAP_DATA) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_MAP_DATA) { int Last = Unpacker.GetInt(); int MapCRC = Unpacker.GetInt(); @@ -1144,7 +1144,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) } } } - else if(Msg == NETMSG_CON_READY) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_CON_READY) { GameClient()->OnConnected(); } @@ -1153,7 +1153,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) CMsgPacker Msg(NETMSG_PING_REPLY); SendMsgEx(&Msg, 0); } - else if(Msg == NETMSG_RCON_CMD_ADD) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_RCON_CMD_ADD) { const char *pName = Unpacker.GetString(CUnpacker::SANITIZE_CC); const char *pHelp = Unpacker.GetString(CUnpacker::SANITIZE_CC); @@ -1161,13 +1161,13 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) if(Unpacker.Error() == 0) m_pConsole->RegisterTemp(pName, pParams, CFGFLAG_SERVER, pHelp); } - else if(Msg == NETMSG_RCON_CMD_REM) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_RCON_CMD_REM) { const char *pName = Unpacker.GetString(CUnpacker::SANITIZE_CC); if(Unpacker.Error() == 0) m_pConsole->DeregisterTemp(pName); } - else if(Msg == NETMSG_RCON_AUTH_STATUS) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_RCON_AUTH_STATUS) { int Result = Unpacker.GetInt(); if(Unpacker.Error() == 0) @@ -1179,7 +1179,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) if(Old != 0 && m_UseTempRconCommands == 0) m_pConsole->DeregisterTempAll(); } - else if(Msg == NETMSG_RCON_LINE) + else if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_RCON_LINE) { const char *pLine = Unpacker.GetString(); if(Unpacker.Error() == 0) @@ -1401,11 +1401,14 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket) } else { - // game message - if(m_DemoRecorder.IsRecording()) - m_DemoRecorder.RecordMessage(pPacket->m_pData, pPacket->m_DataSize); + if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0) + { + // game message + if(m_DemoRecorder.IsRecording()) + m_DemoRecorder.RecordMessage(pPacket->m_pData, pPacket->m_DataSize); - GameClient()->OnMessage(Msg, &Unpacker); + GameClient()->OnMessage(Msg, &Unpacker); + } } } |