Let C4ConfigNetwork check for ports collisions instead of C4Network2

I also wanted to move the default port definitions to C4Config, but not all
are user configurable, so I left them where they are for now. The code is
still better with this change.
stable-5.2
Günther Brammer 2009-06-17 21:41:55 +02:00
parent c901530ee1
commit 7fe7e557e0
4 changed files with 22 additions and 24 deletions

View File

@ -194,6 +194,7 @@ class C4ConfigNetwork
public:
void CompileFunc(StdCompiler *pComp);
const char *GetLeagueServerAddress();
void CheckPortsForCollisions();
};
class C4ConfigStartup

View File

@ -21,20 +21,13 @@
#define INC_C4Network2
#include "C4NetIO.h"
#include "C4Application.h"
#include "C4Network2Client.h"
#include "C4Network2Res.h"
#include "C4Network2IO.h"
#include "C4Network2Players.h"
#include "C4GameParameters.h"
#ifndef BIG_C4INCLUDE
#include "C4PlayerInfo.h"
#include "C4Teams.h"
#include "C4Network2IO.h"
#include "C4Network2Res.h"
#include "C4Network2Client.h"
#include "C4Control.h"
#include "C4Gui.h"
#endif
#include "C4GameParameters.h"
// lobby predef - no need to include lobby in header just for the class ptr
namespace C4GameLobby { class MainDlg; class Countdown; }

View File

@ -817,6 +817,22 @@ const char* C4ConfigNetwork::GetLeagueServerAddress()
return "clonk.de:84/league2b/league.php";
}
void C4ConfigNetwork::CheckPortsForCollisions()
{
// check for port collisions
if(PortTCP != -1 && PortTCP == PortRefServer)
{
LogSilentF("Network: TCP Port collision, setting defaults");
PortTCP = C4NetStdPortTCP;
PortRefServer = C4NetStdPortRefServer;
}
if(PortUDP != -1 && PortUDP == PortDiscovery)
{
LogSilentF("Network: UDP Port collision, setting defaults");
PortUDP = C4NetStdPortUDP;
PortDiscovery = C4NetStdPortDiscovery;
}
}
void C4ConfigControls::ResetKeys()
{
StdCompilerNull Comp; Comp.Compile(mkParAdapt(*this, true));

View File

@ -1010,19 +1010,7 @@ bool C4Network2::InitNetIO(bool fNoClientID, bool fHost)
{
// clear
NetIO.Clear();
// check for port collisions
if(Config.Network.PortTCP != -1 && Config.Network.PortTCP == Config.Network.PortRefServer)
{
LogSilentF("Network: TCP Port collision, setting defaults");
Config.Network.PortTCP = C4NetStdPortTCP;
Config.Network.PortRefServer = C4NetStdPortRefServer;
}
if(Config.Network.PortUDP != -1 && Config.Network.PortUDP == Config.Network.PortDiscovery)
{
LogSilentF("Network: UDP Port collision, setting defaults");
Config.Network.PortUDP = C4NetStdPortUDP;
Config.Network.PortDiscovery = C4NetStdPortDiscovery;
}
Config.Network.CheckPortsForCollisions();
// discovery: disable for client
int16_t iPortDiscovery = fHost ? Config.Network.PortDiscovery : -1;
int16_t iPortRefServer = fHost ? Config.Network.PortRefServer : -1;