From 72002cc366157c3178f28afbc2ce6b49aa0d99b7 Mon Sep 17 00:00:00 2001 From: Nicolas Hake Date: Sun, 13 Dec 2015 16:11:08 +0100 Subject: [PATCH] Kill netpuncher Another piece of code that hasn't been tested in ages, gone. The default puncher address was still pointing to clonk.de, which I'm very certain isn't providing UDP hole punching services anymore. Instead of a bespoke hole punching implementation we should use a STUN lib. --- .gitignore | 1 - CMakeLists.txt | 10 ------ src/config/C4Config.cpp | 1 - src/config/C4Config.h | 1 - src/netpuncher/main.cpp | 70 ------------------------------------ src/network/C4Network2.cpp | 5 --- src/network/C4Network2.h | 1 - src/network/C4Network2IO.cpp | 43 ---------------------- src/network/C4Network2IO.h | 9 ----- 9 files changed, 141 deletions(-) delete mode 100644 src/netpuncher/main.cpp diff --git a/.gitignore b/.gitignore index 75a01f84d..9dd4ed637 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ autom4te.cache deps *.o /openclonk -/netpuncher /c4group /c4script .dirstamp diff --git a/CMakeLists.txt b/CMakeLists.txt index abd1b0905..fedc71cd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -956,10 +956,6 @@ add_executable(c4group src/c4group/C4GroupMain.cpp ) -add_executable(netpuncher EXCLUDE_FROM_ALL - src/netpuncher/main.cpp -) - add_library(libmisc src/c4group/C4Group.cpp src/c4group/C4Group.h @@ -1074,10 +1070,6 @@ if(TARGET mape) ) endif() -target_link_libraries(netpuncher - libmisc -) - target_link_libraries(c4group libmisc ) @@ -1143,7 +1135,6 @@ if(MSVC) oc_set_target_names(openclonk) oc_set_target_names(c4group) oc_set_target_names(c4script) - oc_set_target_names(netpuncher) # cmake does not support embedding arbitrary manifests, # so we add it to the resource file ourselves and tell @@ -1337,7 +1328,6 @@ if (WIN32) target_link_libraries(openclonk ws2_32 winmm) target_link_libraries(c4group ws2_32) - target_link_libraries(netpuncher ws2_32 winmm) target_link_libraries(c4script ws2_32 winmm) if(TARGET mape) target_link_libraries(mape winmm) diff --git a/src/config/C4Config.cpp b/src/config/C4Config.cpp index 5666dbbdc..95e09eb3e 100644 --- a/src/config/C4Config.cpp +++ b/src/config/C4Config.cpp @@ -166,7 +166,6 @@ void C4ConfigNetwork::CompileFunc(StdCompiler *pComp) pComp->Value(mkNamingAdapt(PacketLogging, "PacketLogging", 0 )); - pComp->Value(mkNamingAdapt(s(PuncherAddress), "PuncherAddress", "clonk.de:11115")); // maybe store default for this one? pComp->Value(mkNamingAdapt(mkParAdapt(LastLeagueServer, StdCompiler::RCT_All), "LastLeagueServer", "" )); pComp->Value(mkNamingAdapt(mkParAdapt(LastLeaguePlayerName, StdCompiler::RCT_All), "LastLeaguePlayerName", "" )); pComp->Value(mkNamingAdapt(mkParAdapt(LastLeagueAccount, StdCompiler::RCT_All), "LastLeagueAccount", "" )); diff --git a/src/config/C4Config.h b/src/config/C4Config.h index 505be92f2..9f72d0d9e 100644 --- a/src/config/C4Config.h +++ b/src/config/C4Config.h @@ -160,7 +160,6 @@ public: int32_t MaxLoadFileSize; char LastPassword[CFG_MaxString+1]; char AlternateServerAddress[CFG_MaxString+1]; - char PuncherAddress[CFG_MaxString+1]; StdCopyStrBuf LastLeagueServer, LastLeaguePlayerName, LastLeagueAccount, LastLeagueLoginToken; #ifdef WITH_AUTOMATIC_UPDATE char UpdateServerAddress[CFG_MaxString+1]; diff --git a/src/netpuncher/main.cpp b/src/netpuncher/main.cpp deleted file mode 100644 index 2a0c26895..000000000 --- a/src/netpuncher/main.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * OpenClonk, http://www.openclonk.org - * - * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/ - * Copyright (c) 2010-2013, The OpenClonk Team and contributors - * - * Distributed under the terms of the ISC license; see accompanying file - * "COPYING" for details. - * - * "Clonk" is a registered trademark of Matthes Bender, used with permission. - * See accompanying file "TRADEMARK" for details. - * - * To redistribute this file separately, substitute the full license texts - * for the above references. - */ - -#include -#include "C4NetIO.h" - -#include - -const uint16_t C4PuncherPort = 11115; - -extern bool fQuiet; - -class C4PuncherServer : public C4NetIOUDP, private C4NetIO::CBClass -{ -public: - C4PuncherServer() { C4NetIOUDP::SetCallback(this); } -private: - // Event handlers - virtual bool OnConn(const addr_t &AddrPeer, const addr_t &AddrConnect, const addr_t *OwnAddr, C4NetIO *pNetIO) - { - printf("Punched back at %s:%d...\n", inet_ntoa(AddrPeer.sin_addr), htons(AddrPeer.sin_port)); - return false; - } - virtual void OnPacket(const class C4NetIOPacket &rPacket, C4NetIO *pNetIO) - { - // Unused - } -} Puncher; - -int main(int argc, char * argv[]) -{ - // Log - printf("Starting puncher...\n"); - - // Get port - uint16_t iPort = C4PuncherPort; - if (argc) - { - iPort = atoi(*argv); - if (!iPort) iPort = C4PuncherPort; - } - - // Initialize - if (!Puncher.Init(iPort)) - { - fprintf(stderr, "Could not initialize puncher: %s", Puncher.GetError()); - return 1; - } - - // Log - printf("Listening on port %d...\n", iPort); - - // Execute forever - Puncher.ExecuteUntil(-1); - - return 0; -} diff --git a/src/network/C4Network2.cpp b/src/network/C4Network2.cpp index 99bc4b528..28de7c24f 100644 --- a/src/network/C4Network2.cpp +++ b/src/network/C4Network2.cpp @@ -1976,11 +1976,6 @@ bool C4Network2::LeagueStart(bool *pCancel) return false; } - // We have an internet connection, so let's punch the master server here in order to open an udp port - C4NetIO::addr_t PuncherAddr; - if (ResolveAddress(Config.Network.PuncherAddress, &PuncherAddr, C4NetStdPortPuncher)) - NetIO.Punch(PuncherAddr); - // Let's wait for response StdStrBuf Message = FormatString(LoadResStr("IDS_NET_LEAGUE_REGGAME"), pLeagueClient->getServerName()); Log(Message.getData()); diff --git a/src/network/C4Network2.h b/src/network/C4Network2.h index 7eb533c01..038bf64e7 100644 --- a/src/network/C4Network2.h +++ b/src/network/C4Network2.h @@ -30,7 +30,6 @@ const int16_t C4NetStdPortTCP = 11112, C4NetStdPortUDP = 11113, C4NetStdPortDiscovery = 11114, C4NetStdPortRefServer = 11111, - C4NetStdPortPuncher = 11115, C4NetStdPortHTTP = 80; // resource retrieve wait timeout diff --git a/src/network/C4Network2IO.cpp b/src/network/C4Network2IO.cpp index efeeac761..088ac8ead 100644 --- a/src/network/C4Network2IO.cpp +++ b/src/network/C4Network2IO.cpp @@ -56,7 +56,6 @@ C4Network2IO::C4Network2IO() iTCPIRate(0), iTCPORate(0), iTCPBCRate(0), iUDPIRate(0), iUDPORate(0), iUDPBCRate(0) { - ZeroMem(&PuncherAddr, sizeof(PuncherAddr)); } C4Network2IO::~C4Network2IO() @@ -455,30 +454,9 @@ bool C4Network2IO::BroadcastMsg(const C4NetIOPacket &rPkt) // by both return fSuccess; } -bool C4Network2IO::Punch(C4NetIO::addr_t nPuncherAddr) -{ - // UDP must be initialized - if (!pNetIO_UDP) - return false; - // save address - PuncherAddr = nPuncherAddr; - // let's punch - return pNetIO_UDP->Connect(PuncherAddr); -} - // C4NetIO interface bool C4Network2IO::OnConn(const C4NetIO::addr_t &PeerAddr, const C4NetIO::addr_t &ConnectAddr, const C4NetIO::addr_t *pOwnAddr, C4NetIO *pNetIO) { - // puncher answer? We just make sure here a connection /can/ be established, so close it instantly. - if (pNetIO == pNetIO_UDP) - if (PuncherAddr.sin_addr.s_addr && AddrEqual(PuncherAddr, ConnectAddr)) - { - // got an address? - if (pOwnAddr) - OnPunch(*pOwnAddr); - // this is only a test connection - close it instantly - return false; - } #if(C4NET2IO_DUMP_LEVEL > 1) Application.InteractiveThread.ThreadLogS("OnConn: %s %s", C4TimeMilliseconds::Now().AsString().getData(), @@ -526,13 +504,6 @@ bool C4Network2IO::OnConn(const C4NetIO::addr_t &PeerAddr, const C4NetIO::addr_t void C4Network2IO::OnDisconn(const C4NetIO::addr_t &addr, C4NetIO *pNetIO, const char *szReason) { - // punch? - if (pNetIO == pNetIO_UDP) - if (PuncherAddr.sin_addr.s_addr && AddrEqual(PuncherAddr, addr)) - { - ZeroMem(&PuncherAddr, sizeof(PuncherAddr)); - return; - } #if(C4NET2IO_DUMP_LEVEL > 1) Application.InteractiveThread.ThreadLogS("OnDisconn: %s %s", C4TimeMilliseconds::Now().AsString().getData(), @@ -1237,20 +1208,6 @@ void C4Network2IO::SendConnPackets() } -void C4Network2IO::OnPunch(C4NetIO::addr_t addr) -{ - // Sanity check - assert (addr.sin_family == AF_INET); - if (addr.sin_family != AF_INET) - return; - ZeroMem(addr.sin_zero, sizeof(addr.sin_zero)); - // Add for local client - C4Network2Client *pLocal = ::Network.Clients.GetLocal(); - if (pLocal) - if (pLocal->AddAddr(C4Network2Address(addr, P_UDP), true)) - ::Network.InvalidateReference(); -} - // *** C4Network2IOConnection C4Network2IOConnection::C4Network2IOConnection() diff --git a/src/network/C4Network2IO.h b/src/network/C4Network2IO.h index 553db02fb..dcf63a17d 100644 --- a/src/network/C4Network2IO.h +++ b/src/network/C4Network2IO.h @@ -95,9 +95,6 @@ protected: int iTCPIRate, iTCPORate, iTCPBCRate, iUDPIRate, iUDPORate, iUDPBCRate; - // punching - C4NetIO::addr_t PuncherAddr; - public: bool hasTCP() const { return !! pNetIO_TCP; } @@ -134,9 +131,6 @@ public: bool SendMsgToClient(C4NetIOPacket &rPkt, int iClient); // by both bool BroadcastMsg(const C4NetIOPacket &rPkt); // by both - // punch - bool Punch(C4NetIO::addr_t PuncherAddr); // by main thread - // stuff C4NetIO *getNetIO(C4Network2IOProtocol eProt); // by both const char *getNetIOName(C4NetIO *pNetIO); @@ -192,9 +186,6 @@ protected: void GenerateStatistics(int iInterval); void SendConnPackets(); - // puncher - void OnPunch(C4NetIO::addr_t addr); - }; enum C4Network2IOConnStatus