From 150485e3b0f1cd76ebfed7ca1b9f06aac531e678 Mon Sep 17 00:00:00 2001 From: heinrich5991 Date: Tue, 11 Oct 2022 14:35:15 +0200 Subject: [PATCH] Remove support for legacy 64 player info protocol It was only being used for "Leak IP" favorites and LAN servers. Since KoG has upgraded to latest DDNet, there aren't much servers left that don't understand the new 64 player info protocol. Keywords: fstd, dtsf --- src/engine/client/client.cpp | 15 ++------ src/engine/client/serverbrowser.cpp | 55 +---------------------------- src/engine/client/serverbrowser.h | 2 -- src/engine/serverbrowser.h | 2 -- 4 files changed, 3 insertions(+), 71 deletions(-) diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index a2bf22c36..291410da9 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -1345,8 +1345,6 @@ void CClient::ProcessConnlessPacket(CNetChunk *pPacket) int Type = -1; if(mem_comp(pPacket->m_pData, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)) == 0) Type = SERVERINFO_VANILLA; - else if(mem_comp(pPacket->m_pData, SERVERBROWSE_INFO_64_LEGACY, sizeof(SERVERBROWSE_INFO_64_LEGACY)) == 0) - Type = SERVERINFO_64_LEGACY; else if(mem_comp(pPacket->m_pData, SERVERBROWSE_INFO_EXTENDED, sizeof(SERVERBROWSE_INFO_EXTENDED)) == 0) Type = SERVERINFO_EXTENDED; else if(mem_comp(pPacket->m_pData, SERVERBROWSE_INFO_EXTENDED_MORE, sizeof(SERVERBROWSE_INFO_EXTENDED_MORE)) == 0) @@ -1375,8 +1373,7 @@ void CClient::ProcessServerInfo(int RawType, NETADDR *pFrom, const void *pData, CServerInfo Info = {0}; int SavedType = SavedServerInfoType(RawType); - if((SavedType == SERVERINFO_64_LEGACY || SavedType == SERVERINFO_EXTENDED) && - pEntry && pEntry->m_GotInfo && SavedType == pEntry->m_Info.m_Type) + if(SavedType == SERVERINFO_EXTENDED && pEntry && pEntry->m_GotInfo && SavedType == pEntry->m_Info.m_Type) { Info = pEntry->m_Info; } @@ -1391,7 +1388,6 @@ void CClient::ProcessServerInfo(int RawType, NETADDR *pFrom, const void *pData, #define GET_STRING(array) str_copy(array, Up.GetString(CUnpacker::SANITIZE_CC | CUnpacker::SKIP_START_WHITESPACES), sizeof(array)) #define GET_INT(integer) (integer) = str_toint(Up.GetString()) - int Offset = 0; // Only used for SavedType == SERVERINFO_64_LEGACY int Token; int PacketNo = 0; // Only used if SavedType == SERVERINFO_EXTENDED @@ -1449,13 +1445,6 @@ void CClient::ProcessServerInfo(int RawType, NETADDR *pFrom, const void *pData, dbg_assert(false, "unknown serverinfo type"); } - if(SavedType == SERVERINFO_64_LEGACY) - Offset = Up.GetInt(); - - // Check for valid offset. - if(Offset < 0) - return; - if(SavedType == SERVERINFO_EXTENDED) PacketNo = 0; } @@ -1478,7 +1467,7 @@ void CClient::ProcessServerInfo(int RawType, NETADDR *pFrom, const void *pData, } bool IgnoreError = false; - for(int i = Offset; i < MAX_CLIENTS && Info.m_NumReceivedClients < MAX_CLIENTS && !Up.Error(); i++) + for(int i = 0; i < MAX_CLIENTS && Info.m_NumReceivedClients < MAX_CLIENTS && !Up.Error(); i++) { CServerInfo::CClient *pClient = &Info.m_aClients[Info.m_NumReceivedClients]; GET_STRING(pClient->m_aName); diff --git a/src/engine/client/serverbrowser.cpp b/src/engine/client/serverbrowser.cpp index 996d4916b..aadff40dd 100644 --- a/src/engine/client/serverbrowser.cpp +++ b/src/engine/client/serverbrowser.cpp @@ -720,12 +720,6 @@ void CServerBrowser::OnServerInfoUpdate(const NETADDR &Addr, int Token, const CS { SetInfo(pEntry, *pInfo); pEntry->m_Info.m_Latency = minimum(static_cast((time_get() - m_BroadcastTime) * 1000 / time_freq()), 999); - if(pInfo->m_Type == SERVERINFO_VANILLA && Is64Player(pInfo)) - { - pEntry->m_Request64Legacy = true; - // Force a quick update. - RequestImpl64(Addr, pEntry); - } } else if(pEntry->m_RequestTime > 0) { @@ -747,16 +741,6 @@ void CServerBrowser::OnServerInfoUpdate(const NETADDR &Addr, int Token, const CS SetLatency(Addr, Latency); } pEntry->m_RequestTime = -1; // Request has been answered - - if(!pEntry->m_RequestIgnoreInfo) - { - if(pInfo->m_Type == SERVERINFO_VANILLA && Is64Player(pInfo)) - { - pEntry->m_Request64Legacy = true; - // Force a quick update. - RequestImpl64(Addr, pEntry); - } - } } RemoveRequest(pEntry); @@ -872,35 +856,6 @@ void CServerBrowser::RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int pEntry->m_RequestTime = time_get(); } -void CServerBrowser::RequestImpl64(const NETADDR &Addr, CServerEntry *pEntry) const -{ - unsigned char aBuffer[sizeof(SERVERBROWSE_GETINFO_64_LEGACY) + 1]; - CNetChunk Packet; - - if(g_Config.m_Debug) - { - char aAddrStr[NETADDR_MAXSTRSIZE]; - net_addr_str(&Addr, aAddrStr, sizeof(aAddrStr), true); - char aBuf[256]; - str_format(aBuf, sizeof(aBuf), "requesting server info 64 from %s", aAddrStr); - m_pConsole->Print(IConsole::OUTPUT_LEVEL_DEBUG, "client_srvbrowse", aBuf); - } - - mem_copy(aBuffer, SERVERBROWSE_GETINFO_64_LEGACY, sizeof(SERVERBROWSE_GETINFO_64_LEGACY)); - aBuffer[sizeof(SERVERBROWSE_GETINFO_64_LEGACY)] = GetBasicToken(GenerateToken(Addr)); - - Packet.m_ClientID = -1; - Packet.m_Address = Addr; - Packet.m_Flags = NETSENDFLAG_CONNLESS; - Packet.m_DataSize = sizeof(aBuffer); - Packet.m_pData = aBuffer; - - m_pNetClient->Send(&Packet); - - if(pEntry) - pEntry->m_RequestTime = time_get(); -} - void CServerBrowser::RequestCurrentServer(const NETADDR &Addr) const { RequestImpl(Addr, nullptr, nullptr, nullptr, false); @@ -1123,10 +1078,7 @@ void CServerBrowser::Update(bool ForceResort) if(pEntry->m_RequestTime == 0) { - if(pEntry->m_Request64Legacy) - RequestImpl64(pEntry->m_Info.m_aAddresses[0], pEntry); - else - RequestImpl(pEntry->m_Info.m_aAddresses[0], pEntry, nullptr, nullptr, false); + RequestImpl(pEntry->m_Info.m_aAddresses[0], pEntry, nullptr, nullptr, false); } Count++; @@ -1563,8 +1515,3 @@ bool CServerInfo::ParseLocation(int *pResult, const char *pString) } return true; } - -bool Is64Player(const CServerInfo *pInfo) -{ - return str_find(pInfo->m_aGameType, "64") || str_find(pInfo->m_aName, "64") || str_find_nocase(pInfo->m_aGameType, "ddracenet") || str_find_nocase(pInfo->m_aGameType, "ddnet"); -} diff --git a/src/engine/client/serverbrowser.h b/src/engine/client/serverbrowser.h index ac617c5f6..a21d34474 100644 --- a/src/engine/client/serverbrowser.h +++ b/src/engine/client/serverbrowser.h @@ -32,7 +32,6 @@ public: int64_t m_RequestTime; bool m_RequestIgnoreInfo; int m_GotInfo; - bool m_Request64Legacy; CServerInfo m_Info; CServerEntry *m_pPrevReq; // request list @@ -131,7 +130,6 @@ public: void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion); void OnInit(); - void RequestImpl64(const NETADDR &Addr, CServerEntry *pEntry) const; void QueueRequest(CServerEntry *pEntry); CServerEntry *Find(const NETADDR &Addr); int GetCurrentType() override { return m_ServerlistType; } diff --git a/src/engine/serverbrowser.h b/src/engine/serverbrowser.h index 409079639..1e9032036 100644 --- a/src/engine/serverbrowser.h +++ b/src/engine/serverbrowser.h @@ -85,8 +85,6 @@ public: static bool ParseLocation(int *pResult, const char *pString); }; -bool Is64Player(const CServerInfo *pInfo); - class IServerBrowser : public IInterface { MACRO_INTERFACE("serverbrowser", 0)