MCPcopy Create free account
hub / github.com/ddnet/ddnet / RequestImpl

Method RequestImpl

src/engine/client/serverbrowser.cpp:1066–1134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1064}
1065
1066void CServerBrowser::RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
1067{
1068 if(g_Config.m_Debug)
1069 {
1070 char aAddrStr[NETADDR_MAXSTRSIZE];
1071 net_addr_str(&Addr, aAddrStr, sizeof(aAddrStr), true);
1072 char aBuf[256];
1073 str_format(aBuf, sizeof(aBuf), "requesting server info from %s", aAddrStr);
1074 m_pConsole->Print(IConsole::OUTPUT_LEVEL_DEBUG, "serverbrowser", aBuf);
1075 }
1076
1077 int Token = GenerateToken(Addr);
1078 if(RandomToken)
1079 {
1080 int AvoidBasicToken = GetBasicToken(Token);
1081 do
1082 {
1083 secure_random_fill(&Token, sizeof(Token));
1084 Token &= 0xffffff;
1085 } while(GetBasicToken(Token) == AvoidBasicToken);
1086 }
1087 if(pToken)
1088 {
1089 *pToken = Token;
1090 }
1091 if(pBasicToken)
1092 {
1093 *pBasicToken = GetBasicToken(Token);
1094 }
1095
1096 if(Addr.type & NETTYPE_TW7)
1097 {
1098 CPacker Packer;
1099 Packer.Reset();
1100 Packer.AddRaw(SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO));
1101 Packer.AddInt(Token);
1102
1103 CNetChunk Packet;
1104 Packet.m_ClientId = -1;
1105 Packet.m_Address = Addr;
1106 Packet.m_Flags = NETSENDFLAG_CONNLESS;
1107 Packet.m_DataSize = Packer.Size();
1108 Packet.m_pData = Packer.Data();
1109 mem_zero(&Packet.m_aExtraData, sizeof(Packet.m_aExtraData));
1110
1111 m_pNetClient->Send(&Packet);
1112 }
1113 else
1114 {
1115 unsigned char aBuffer[sizeof(SERVERBROWSE_GETINFO) + 1];
1116 mem_copy(aBuffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO));
1117 aBuffer[sizeof(SERVERBROWSE_GETINFO)] = GetBasicToken(Token);
1118
1119 CNetChunk Packet;
1120 Packet.m_ClientId = -1;
1121 Packet.m_Address = Addr;
1122 Packet.m_Flags = NETSENDFLAG_CONNLESS | NETSENDFLAG_EXTENDED;
1123 Packet.m_DataSize = sizeof(aBuffer);

Callers

nothing calls this directly

Calls 13

net_addr_strFunction · 0.85
str_formatFunction · 0.85
secure_random_fillFunction · 0.85
mem_zeroFunction · 0.85
mem_copyFunction · 0.85
time_getFunction · 0.85
AddRawMethod · 0.80
AddIntMethod · 0.80
PrintMethod · 0.45
ResetMethod · 0.45
SizeMethod · 0.45
DataMethod · 0.45

Tested by

no test coverage detected