about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-04-04 18:20:05 +0200
committeroy <Tom_Adams@web.de>2011-04-04 18:20:05 +0200
commit4ad6d2f01e5b972a969dced080976f2e8dfbd939 (patch)
treecd0e24e2daf73295c0a23ff12198b5bc0acd555c /src/engine
parent622b3de9bd224dca8c55ea6ab7b12d05dc30e705 (diff)
downloadzcatch-4ad6d2f01e5b972a969dced080976f2e8dfbd939.tar.gz
zcatch-4ad6d2f01e5b972a969dced080976f2e8dfbd939.zip
fixed problem with sv_bindaddr on the server
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/client.cpp28
-rw-r--r--src/engine/client/client.h1
-rw-r--r--src/engine/engine.h3
-rw-r--r--src/engine/masterserver.h2
-rw-r--r--src/engine/server/register.cpp4
-rw-r--r--src/engine/server/register.h2
-rw-r--r--src/engine/server/server.cpp2
-rw-r--r--src/engine/shared/engine.cpp5
-rw-r--r--src/engine/shared/masterserver.cpp4
9 files changed, 27 insertions, 24 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index e9df09c5..e3ff7b47 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1788,7 +1788,7 @@ void CClient::VersionUpdate()
 {
 	if(m_VersionInfo.m_State == CVersionInfo::STATE_INIT)
 	{
-		Engine()->HostLookup(&m_VersionInfo.m_VersionServeraddr, g_Config.m_ClVersionServer);
+		Engine()->HostLookup(&m_VersionInfo.m_VersionServeraddr, g_Config.m_ClVersionServer, m_BindAddr.type);
 		m_VersionInfo.m_State = CVersionInfo::STATE_START;
 	}
 	else if(m_VersionInfo.m_State == CVersionInfo::STATE_START)
@@ -1851,6 +1851,18 @@ void CClient::Run()
 	if(m_pGraphics->Init() != 0)
 		return;
 
+	// open socket
+	{
+		NETADDR BindAddr;
+		mem_zero(&BindAddr, sizeof(BindAddr));
+		BindAddr.type = NETTYPE_ALL;
+		if(!m_NetClient.Open(BindAddr, 0))
+		{
+			dbg_msg("client", "couldn't start network");
+			return;
+		}
+	}
+
 	// init font rendering
 	Kernel()->RequestInterface<IEngineTextRender>()->Init();
 
@@ -1858,7 +1870,7 @@ void CClient::Run()
 	Input()->Init();
 
 	// start refreshing addresses while we load
-	MasterServer()->RefreshAddresses();
+	MasterServer()->RefreshAddresses(m_BindAddr.type);
 
 	// init the editor
 	m_pEditor->Init();
@@ -1875,18 +1887,6 @@ void CClient::Run()
 	str_format(aBuf, sizeof(aBuf), "version %s", GameClient()->NetVersion());
 	m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "client", aBuf);
 
-	// open socket
-	{
-		NETADDR BindAddr;
-		mem_zero(&BindAddr, sizeof(BindAddr));
-		BindAddr.type = NETTYPE_ALL;
-		if(!m_NetClient.Open(BindAddr, 0))
-		{
-			dbg_msg("client", "couldn't start network");
-			return;
-		}
-	}
-
 	// connect to the server if wanted
 	/*
 	if(config.cl_connect[0] != 0)
diff --git a/src/engine/client/client.h b/src/engine/client/client.h
index fa0ddaf7..ddcd1167 100644
--- a/src/engine/client/client.h
+++ b/src/engine/client/client.h
@@ -118,6 +118,7 @@ class CClient : public IClient, public CDemoPlayer::IListner
 	float m_FrameTimeHigh;
 	int m_Frames;
 	NETADDR m_ServerAddress;
+	NETADDR m_BindAddr;
 	int m_WindowMustRefocus;
 	int m_SnapCrcErrors;
 	bool m_AutoScreenshotRecycle;
diff --git a/src/engine/engine.h b/src/engine/engine.h
index c439c4ee..f4b6864c 100644
--- a/src/engine/engine.h
+++ b/src/engine/engine.h
@@ -11,6 +11,7 @@ class CHostLookup
 public:
 	CJob m_Job;
 	char m_aHostname[128];
+	int m_Nettype;
 	NETADDR m_Addr;
 };
 
@@ -24,7 +25,7 @@ protected:
 public:
 	virtual void Init() = 0;
 	virtual void InitLogfile() = 0;
-	virtual void HostLookup(CHostLookup *pLookup, const char *pHostname) = 0;
+	virtual void HostLookup(CHostLookup *pLookup, const char *pHostname, int Nettype) = 0;
 	virtual void AddJob(CJob *pJob, JOBFUNC pfnFunc, void *pData) = 0;
 };
 
diff --git a/src/engine/masterserver.h b/src/engine/masterserver.h
index 98a9cf0a..74a394dc 100644
--- a/src/engine/masterserver.h
+++ b/src/engine/masterserver.h
@@ -20,7 +20,7 @@ public:
 	virtual int Load() = 0;
 	virtual int Save() = 0;
 
-	virtual int RefreshAddresses() = 0;
+	virtual int RefreshAddresses(int Nettype) = 0;
 	virtual void Update() = 0;
 	virtual int IsRefreshing() = 0;
 	virtual void DumpServers() = 0;
diff --git a/src/engine/server/register.cpp b/src/engine/server/register.cpp
index 5f43e292..0b53c67c 100644
--- a/src/engine/server/register.cpp
+++ b/src/engine/server/register.cpp
@@ -97,7 +97,7 @@ void CRegister::Init(CNetServer *pNetServer, IEngineMasterServer *pMasterServer,
 	m_pConsole = pConsole;
 }
 
-void CRegister::RegisterUpdate()
+void CRegister::RegisterUpdate(int Nettype)
 {
 	int64 Now = time_get();
 	int64 Freq = time_freq();
@@ -112,7 +112,7 @@ void CRegister::RegisterUpdate()
 		m_RegisterCount = 0;
 		m_RegisterFirst = 1;
 		RegisterNewState(REGISTERSTATE_UPDATE_ADDRS);
-		m_pMasterServer->RefreshAddresses();
+		m_pMasterServer->RefreshAddresses(Nettype);
 		m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "register", "refreshing ip addresses");
 	}
 	else if(m_RegisterState == REGISTERSTATE_UPDATE_ADDRS)
diff --git a/src/engine/server/register.h b/src/engine/server/register.h
index 86080177..44e6dd14 100644
--- a/src/engine/server/register.h
+++ b/src/engine/server/register.h
@@ -44,7 +44,7 @@ class CRegister
 public:
 	CRegister();
 	void Init(class CNetServer *pNetServer, class IEngineMasterServer *pMasterServer, class IConsole *pConsole);
-	void RegisterUpdate();
+	void RegisterUpdate(int Nettype);
 	int RegisterProcessPacket(class CNetChunk *pPacket);
 };
 
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index cf0c879b..9395ad79 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1230,7 +1230,7 @@ int CServer::Run()
 			}
 			
 			// master server stuff
-			m_Register.RegisterUpdate();
+			m_Register.RegisterUpdate(BindAddr.type);
 	
 			PumpNetwork();
 	
diff --git a/src/engine/shared/engine.cpp b/src/engine/shared/engine.cpp
index c7a1daad..b4b4f2a5 100644
--- a/src/engine/shared/engine.cpp
+++ b/src/engine/shared/engine.cpp
@@ -13,7 +13,7 @@
 static int HostLookupThread(void *pUser)
 {
 	CHostLookup *pLookup = (CHostLookup *)pUser;
-	return net_host_lookup(pLookup->m_aHostname, &pLookup->m_Addr, NETTYPE_ALL);
+	return net_host_lookup(pLookup->m_aHostname, &pLookup->m_Addr, pLookup->m_Nettype);
 }
 
 class CEngine : public IEngine
@@ -98,9 +98,10 @@ public:
 			dbg_logger_file(g_Config.m_Logfile);
 	}
 
-	void HostLookup(CHostLookup *pLookup, const char *pHostname)
+	void HostLookup(CHostLookup *pLookup, const char *pHostname, int Nettype)
 	{
 		str_copy(pLookup->m_aHostname, pHostname, sizeof(pLookup->m_aHostname));
+		pLookup->m_Nettype = Nettype;
 		AddJob(&pLookup->m_Job, HostLookupThread, pLookup);
 	}
 
diff --git a/src/engine/shared/masterserver.cpp b/src/engine/shared/masterserver.cpp
index 8890b327..0e8cb394 100644
--- a/src/engine/shared/masterserver.cpp
+++ b/src/engine/shared/masterserver.cpp
@@ -35,7 +35,7 @@ public:
 		m_pEngine = 0;
 	}
 
-	virtual int RefreshAddresses()
+	virtual int RefreshAddresses(int Nettype)
 	{
 		int i;
 		
@@ -47,7 +47,7 @@ public:
 		// add lookup jobs
 		for(i = 0; i < MAX_MASTERSERVERS; i++)
 		{
-			m_pEngine->HostLookup(&m_aMasterServers[i].m_Lookup, m_aMasterServers[i].m_aHostname);
+			m_pEngine->HostLookup(&m_aMasterServers[i].m_Lookup, m_aMasterServers[i].m_aHostname, Nettype);
 			m_aMasterServers[i].m_Valid = false;
 		}