mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Merge branch 'master' of github.com:ddnet/ddnet
This commit is contained in:
commit
85f6e45abb
|
@ -1493,7 +1493,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
if(Sys)
|
if(Sys)
|
||||||
{
|
{
|
||||||
// system message
|
// 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);
|
const char *pMap = Unpacker.GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);
|
||||||
int MapCrc = Unpacker.GetInt();
|
int MapCrc = Unpacker.GetInt();
|
||||||
|
@ -1602,7 +1602,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();
|
GameClient()->OnConnected();
|
||||||
}
|
}
|
||||||
|
@ -1611,7 +1611,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
CMsgPacker Msg(NETMSG_PING_REPLY);
|
CMsgPacker Msg(NETMSG_PING_REPLY);
|
||||||
SendMsgEx(&Msg, 0);
|
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 *pName = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
||||||
const char *pHelp = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
const char *pHelp = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
||||||
|
@ -1619,13 +1619,13 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
if(Unpacker.Error() == 0)
|
if(Unpacker.Error() == 0)
|
||||||
m_pConsole->RegisterTemp(pName, pParams, CFGFLAG_SERVER, pHelp);
|
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);
|
const char *pName = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
||||||
if(Unpacker.Error() == 0)
|
if(Unpacker.Error() == 0)
|
||||||
m_pConsole->DeregisterTemp(pName);
|
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();
|
int Result = Unpacker.GetInt();
|
||||||
if(Unpacker.Error() == 0)
|
if(Unpacker.Error() == 0)
|
||||||
|
@ -1637,7 +1637,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
if(Old != 0 && m_UseTempRconCommands == 0)
|
if(Old != 0 && m_UseTempRconCommands == 0)
|
||||||
m_pConsole->DeregisterTempAll();
|
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();
|
const char *pLine = Unpacker.GetString();
|
||||||
if(Unpacker.Error() == 0)
|
if(Unpacker.Error() == 0)
|
||||||
|
@ -1890,6 +1890,8 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 || Msg == NETMSGTYPE_SV_EXTRAPROJECTILE)
|
||||||
{
|
{
|
||||||
// game message
|
// game message
|
||||||
for(int i = 0; i < RECORDER_MAX; i++)
|
for(int i = 0; i < RECORDER_MAX; i++)
|
||||||
|
@ -1898,6 +1900,7 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket)
|
||||||
|
|
||||||
GameClient()->OnMessage(Msg, &Unpacker);
|
GameClient()->OnMessage(Msg, &Unpacker);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CClient::ProcessServerPacketDummy(CNetChunk *pPacket)
|
void CClient::ProcessServerPacketDummy(CNetChunk *pPacket)
|
||||||
|
|
|
@ -957,7 +957,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
// system message
|
// system message
|
||||||
if(Msg == NETMSG_INFO)
|
if(Msg == NETMSG_INFO)
|
||||||
{
|
{
|
||||||
if(m_aClients[ClientID].m_State == CClient::STATE_AUTH)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && m_aClients[ClientID].m_State == CClient::STATE_AUTH)
|
||||||
{
|
{
|
||||||
const char *pVersion = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
const char *pVersion = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
||||||
if(str_comp(pVersion, GameServer()->NetVersion()) != 0)
|
if(str_comp(pVersion, GameServer()->NetVersion()) != 0)
|
||||||
|
@ -990,8 +990,8 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
}
|
}
|
||||||
else if(Msg == NETMSG_REQUEST_MAP_DATA)
|
else if(Msg == NETMSG_REQUEST_MAP_DATA)
|
||||||
{
|
{
|
||||||
if(m_aClients[ClientID].m_State < CClient::STATE_CONNECTING)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) == 0 || m_aClients[ClientID].m_State < CClient::STATE_CONNECTING)
|
||||||
return; // no map w/o password, sorry guys
|
return;
|
||||||
|
|
||||||
int Chunk = Unpacker.GetInt();
|
int Chunk = Unpacker.GetInt();
|
||||||
unsigned int ChunkSize = 1024-128;
|
unsigned int ChunkSize = 1024-128;
|
||||||
|
@ -1035,7 +1035,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
}
|
}
|
||||||
else if(Msg == NETMSG_READY)
|
else if(Msg == NETMSG_READY)
|
||||||
{
|
{
|
||||||
if(m_aClients[ClientID].m_State == CClient::STATE_CONNECTING)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && m_aClients[ClientID].m_State == CClient::STATE_CONNECTING)
|
||||||
{
|
{
|
||||||
char aAddrStr[NETADDR_MAXSTRSIZE];
|
char aAddrStr[NETADDR_MAXSTRSIZE];
|
||||||
net_addr_str(m_NetServer.ClientAddr(ClientID), aAddrStr, sizeof(aAddrStr), true);
|
net_addr_str(m_NetServer.ClientAddr(ClientID), aAddrStr, sizeof(aAddrStr), true);
|
||||||
|
@ -1051,7 +1051,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
}
|
}
|
||||||
else if(Msg == NETMSG_ENTERGAME)
|
else if(Msg == NETMSG_ENTERGAME)
|
||||||
{
|
{
|
||||||
if(m_aClients[ClientID].m_State == CClient::STATE_READY && GameServer()->IsClientReady(ClientID))
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && m_aClients[ClientID].m_State == CClient::STATE_READY && GameServer()->IsClientReady(ClientID))
|
||||||
{
|
{
|
||||||
char aAddrStr[NETADDR_MAXSTRSIZE];
|
char aAddrStr[NETADDR_MAXSTRSIZE];
|
||||||
net_addr_str(m_NetServer.ClientAddr(ClientID), aAddrStr, sizeof(aAddrStr), true);
|
net_addr_str(m_NetServer.ClientAddr(ClientID), aAddrStr, sizeof(aAddrStr), true);
|
||||||
|
@ -1124,7 +1124,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
if (GameServer->m_apPlayers[ClientID] && GameServer->m_apPlayers[ClientID]->m_ClientVersion < VERSION_DDNET_OLD)
|
if (GameServer->m_apPlayers[ClientID] && GameServer->m_apPlayers[ClientID]->m_ClientVersion < VERSION_DDNET_OLD)
|
||||||
GameServer->m_apPlayers[ClientID]->m_ClientVersion = VERSION_DDNET_OLD;
|
GameServer->m_apPlayers[ClientID]->m_ClientVersion = VERSION_DDNET_OLD;
|
||||||
} else
|
} else
|
||||||
if(Unpacker.Error() == 0 && m_aClients[ClientID].m_Authed)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Unpacker.Error() == 0 && m_aClients[ClientID].m_Authed)
|
||||||
{
|
{
|
||||||
CGameContext *GameServer = (CGameContext *) m_pGameServer;
|
CGameContext *GameServer = (CGameContext *) m_pGameServer;
|
||||||
if (GameServer->m_apPlayers[ClientID] && (GameServer->m_apPlayers[ClientID]->m_ClientVersion < VERSION_DDNET_RCONPROTECT || m_aClients[ClientID].m_LastAuthed))
|
if (GameServer->m_apPlayers[ClientID] && (GameServer->m_apPlayers[ClientID]->m_ClientVersion < VERSION_DDNET_RCONPROTECT || m_aClients[ClientID].m_LastAuthed))
|
||||||
|
@ -1149,7 +1149,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
Unpacker.GetString(); // login name, not used
|
Unpacker.GetString(); // login name, not used
|
||||||
pPw = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
pPw = Unpacker.GetString(CUnpacker::SANITIZE_CC);
|
||||||
|
|
||||||
if(Unpacker.Error() == 0)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && Unpacker.Error() == 0)
|
||||||
{
|
{
|
||||||
if(g_Config.m_SvRconPassword[0] == 0 && g_Config.m_SvRconModPassword[0] == 0)
|
if(g_Config.m_SvRconPassword[0] == 0 && g_Config.m_SvRconModPassword[0] == 0)
|
||||||
{
|
{
|
||||||
|
@ -1251,7 +1251,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// game message
|
// game message
|
||||||
if(m_aClients[ClientID].m_State >= CClient::STATE_READY)
|
if((pPacket->m_Flags&NET_CHUNKFLAG_VITAL) != 0 && m_aClients[ClientID].m_State >= CClient::STATE_READY)
|
||||||
GameServer()->OnMessage(Msg, &Unpacker, ClientID);
|
GameServer()->OnMessage(Msg, &Unpacker, ClientID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ int CNetRecvUnpacker::FetchChunk(CNetChunk *pChunk)
|
||||||
// fill in the info
|
// fill in the info
|
||||||
pChunk->m_ClientID = m_ClientID;
|
pChunk->m_ClientID = m_ClientID;
|
||||||
pChunk->m_Address = m_Addr;
|
pChunk->m_Address = m_Addr;
|
||||||
pChunk->m_Flags = 0;
|
pChunk->m_Flags = Header.m_Flags;
|
||||||
pChunk->m_DataSize = Header.m_Size;
|
pChunk->m_DataSize = Header.m_Size;
|
||||||
pChunk->m_pData = pData;
|
pChunk->m_pData = pData;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -153,6 +153,7 @@ class CNetConnection
|
||||||
private:
|
private:
|
||||||
unsigned short m_Sequence;
|
unsigned short m_Sequence;
|
||||||
unsigned short m_Ack;
|
unsigned short m_Ack;
|
||||||
|
unsigned short m_PeerAck;
|
||||||
unsigned m_State;
|
unsigned m_State;
|
||||||
|
|
||||||
int m_Token;
|
int m_Token;
|
||||||
|
|
|
@ -20,6 +20,7 @@ void CNetConnection::Reset(bool Rejoin)
|
||||||
{
|
{
|
||||||
m_Sequence = 0;
|
m_Sequence = 0;
|
||||||
m_Ack = 0;
|
m_Ack = 0;
|
||||||
|
m_PeerAck = 0;
|
||||||
m_RemoteClosed = 0;
|
m_RemoteClosed = 0;
|
||||||
|
|
||||||
if (!Rejoin)
|
if (!Rejoin)
|
||||||
|
@ -246,6 +247,19 @@ int CNetConnection::Feed(CNetPacketConstruct *pPacket, NETADDR *pAddr, SECURITY_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if actual ack value is valid(own sequence..latest peer ack)
|
||||||
|
if(m_Sequence >= m_PeerAck)
|
||||||
|
{
|
||||||
|
if(pPacket->m_Ack < m_PeerAck || pPacket->m_Ack > m_Sequence)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(pPacket->m_Ack < m_PeerAck && pPacket->m_Ack > m_Sequence)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
m_PeerAck = pPacket->m_Ack;
|
||||||
|
|
||||||
int64 Now = time_get();
|
int64 Now = time_get();
|
||||||
|
|
||||||
// check if resend is requested
|
// check if resend is requested
|
||||||
|
|
|
@ -476,7 +476,7 @@ void CCharacter::FireWeapon()
|
||||||
for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++)
|
for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++)
|
||||||
Msg.AddInt(((int *)&p)[i]);
|
Msg.AddInt(((int *)&p)[i]);
|
||||||
|
|
||||||
Server()->SendMsg(&Msg, 0, m_pPlayer->GetCID());
|
Server()->SendMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
||||||
GameServer()->CreateSound(m_Pos, SOUND_GUN_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID()));
|
GameServer()->CreateSound(m_Pos, SOUND_GUN_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID()));
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -510,7 +510,7 @@ void CCharacter::FireWeapon()
|
||||||
Msg.AddInt(((int *)&p)[i]);
|
Msg.AddInt(((int *)&p)[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Server()->SendMsg(&Msg, 0,m_pPlayer->GetCID());
|
Server()->SendMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
||||||
|
|
||||||
GameServer()->CreateSound(m_Pos, SOUND_SHOTGUN_FIRE);*/
|
GameServer()->CreateSound(m_Pos, SOUND_SHOTGUN_FIRE);*/
|
||||||
float LaserReach;
|
float LaserReach;
|
||||||
|
@ -554,7 +554,7 @@ void CCharacter::FireWeapon()
|
||||||
Msg.AddInt(1);
|
Msg.AddInt(1);
|
||||||
for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++)
|
for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++)
|
||||||
Msg.AddInt(((int *)&p)[i]);
|
Msg.AddInt(((int *)&p)[i]);
|
||||||
Server()->SendMsg(&Msg, 0, m_pPlayer->GetCID());
|
Server()->SendMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
||||||
|
|
||||||
GameServer()->CreateSound(m_Pos, SOUND_GRENADE_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID()));
|
GameServer()->CreateSound(m_Pos, SOUND_GRENADE_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID()));
|
||||||
} break;
|
} break;
|
||||||
|
|
Loading…
Reference in a new issue