Skip to content

Commit f7cfe20

Browse files
committed
Fix server crash on info request with invalid token
1 parent c56fa9e commit f7cfe20

2 files changed

Lines changed: 9 additions & 14 deletions

File tree

src/engine/server/server.cpp

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,7 +1071,7 @@ void CServer::ProcessClientPacket(CNetChunk *pPacket)
10711071
}
10721072
}
10731073

1074-
void CServer::GenerateServerInfo(CPacker *pPacker, int Token)
1074+
void CServer::GenerateServerInfo(CPacker *pPacker, bool IncludeClientInfo)
10751075
{
10761076
// count the players
10771077
int PlayerCount = 0, ClientCount = 0;
@@ -1086,13 +1086,6 @@ void CServer::GenerateServerInfo(CPacker *pPacker, int Token)
10861086
}
10871087
}
10881088

1089-
if(Token != -1)
1090-
{
1091-
pPacker->Reset();
1092-
pPacker->AddRaw(SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO));
1093-
pPacker->AddInt(Token);
1094-
}
1095-
10961089
pPacker->AddString(GameServer()->Version(), 32);
10971090
pPacker->AddString(Config()->m_SvName, 64);
10981091
pPacker->AddString(Config()->m_SvHostname, 128);
@@ -1115,7 +1108,7 @@ void CServer::GenerateServerInfo(CPacker *pPacker, int Token)
11151108
pPacker->AddInt(ClientCount); // num clients
11161109
pPacker->AddInt(maximum(ClientCount, Config()->m_SvMaxClients)); // max clients
11171110

1118-
if(Token != -1)
1111+
if(IncludeClientInfo)
11191112
{
11201113
for(int i = 0; i < MAX_CLIENTS; i++)
11211114
{
@@ -1134,7 +1127,7 @@ void CServer::GenerateServerInfo(CPacker *pPacker, int Token)
11341127
void CServer::SendServerInfo(int ClientID)
11351128
{
11361129
CMsgPacker Msg(NETMSG_SERVERINFO, true);
1137-
GenerateServerInfo(&Msg, -1);
1130+
GenerateServerInfo(&Msg, false);
11381131
if(ClientID == -1)
11391132
{
11401133
for(int i = 0; i < MAX_CLIENTS; i++)
@@ -1172,10 +1165,12 @@ void CServer::PumpNetwork()
11721165
continue;
11731166

11741167
CPacker Packer;
1175-
CNetChunk Response;
1176-
1177-
GenerateServerInfo(&Packer, SrvBrwsToken);
1168+
Packer.Reset();
1169+
Packer.AddRaw(SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO));
1170+
Packer.AddInt(SrvBrwsToken);
1171+
GenerateServerInfo(&Packer, true);
11781172

1173+
CNetChunk Response;
11791174
Response.m_ClientID = -1;
11801175
Response.m_Address = Packet.m_Address;
11811176
Response.m_Flags = NETSENDFLAG_CONNLESS;

src/engine/server/server.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class CServer : public IServer
243243
void ProcessClientPacket(CNetChunk *pPacket);
244244

245245
void SendServerInfo(int ClientID);
246-
void GenerateServerInfo(CPacker *pPacker, int Token);
246+
void GenerateServerInfo(CPacker *pPacker, bool IncludeClientInfo);
247247

248248
void PumpNetwork();
249249

0 commit comments

Comments
 (0)