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

Method Refresh

src/engine/client/serverbrowser.cpp:996–1064  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

994}
995
996void CServerBrowser::Refresh(int Type, bool Force)
997{
998 bool ServerListTypeChanged = Force || m_ServerlistType != Type;
999 int OldServerListType = m_ServerlistType;
1000 m_ServerlistType = Type;
1001 secure_random_fill(m_aTokenSeed, sizeof(m_aTokenSeed));
1002
1003 if(Type == IServerBrowser::TYPE_LAN || (ServerListTypeChanged && OldServerListType == IServerBrowser::TYPE_LAN))
1004 CleanUp();
1005
1006 if(Type == IServerBrowser::TYPE_LAN)
1007 {
1008 unsigned char aBuffer[sizeof(SERVERBROWSE_GETINFO) + 1];
1009 CNetChunk Packet;
1010
1011 /* do the broadcast version */
1012 mem_zero(&Packet, sizeof(Packet));
1013 Packet.m_Address.type = (m_pNetClient->NetType() & ~(NETTYPE_WEBSOCKET_IPV4 | NETTYPE_WEBSOCKET_IPV6)) | NETTYPE_LINK_BROADCAST;
1014 Packet.m_Flags = NETSENDFLAG_CONNLESS | NETSENDFLAG_EXTENDED;
1015 Packet.m_DataSize = sizeof(aBuffer);
1016 Packet.m_pData = aBuffer;
1017
1018 int Token = GenerateToken(Packet.m_Address);
1019 mem_copy(aBuffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO));
1020 aBuffer[sizeof(SERVERBROWSE_GETINFO)] = GetBasicToken(Token);
1021
1022 Packet.m_aExtraData[0] = GetExtraToken(Token) >> 8;
1023 Packet.m_aExtraData[1] = GetExtraToken(Token) & 0xff;
1024
1025 m_BroadcastTime = time_get();
1026
1027 CPacker Packer;
1028 Packer.Reset();
1029 Packer.AddRaw(SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO));
1030 Packer.AddInt(Token);
1031
1032 CNetChunk Packet7;
1033 mem_zero(&Packet7, sizeof(Packet7));
1034 Packet7.m_Address.type = (m_pNetClient->NetType() & ~(NETTYPE_WEBSOCKET_IPV4 | NETTYPE_WEBSOCKET_IPV6)) | NETTYPE_TW7 | NETTYPE_LINK_BROADCAST;
1035 Packet7.m_Flags = NETSENDFLAG_CONNLESS;
1036 Packet7.m_DataSize = Packer.Size();
1037 Packet7.m_pData = Packer.Data();
1038
1039 for(int Port = LAN_PORT_BEGIN; Port <= LAN_PORT_END; Port++)
1040 {
1041 Packet.m_Address.port = Port;
1042 m_pNetClient->Send(&Packet);
1043
1044 Packet7.m_Address.port = Port;
1045 m_pNetClient->Send(&Packet7);
1046 }
1047
1048 if(g_Config.m_Debug)
1049 m_pConsole->Print(IConsole::OUTPUT_LEVEL_DEBUG, "serverbrowser", "broadcasting for servers");
1050 }
1051 else
1052 {
1053 m_pHttp->Refresh();

Callers 1

UpdateMethod · 0.45

Calls 14

secure_random_fillFunction · 0.85
mem_zeroFunction · 0.85
mem_copyFunction · 0.85
time_getFunction · 0.85
AddRawMethod · 0.80
AddIntMethod · 0.80
NetTypeMethod · 0.45
ResetMethod · 0.45
SizeMethod · 0.45
DataMethod · 0.45
SendMethod · 0.45
PrintMethod · 0.45

Tested by

no test coverage detected