about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2012-01-06 19:17:14 +0100
committeroy <Tom_Adams@web.de>2012-01-06 19:17:14 +0100
commit29738552a69e5b74410f2667e81243593cc26233 (patch)
treee5d23361c13d44c87be64ccf929d80d008ac6aaa /src
parent78bb0e3d8c6c4ea35bc35aada6dfb780930570b2 (diff)
downloadzcatch-29738552a69e5b74410f2667e81243593cc26233.tar.gz
zcatch-29738552a69e5b74410f2667e81243593cc26233.zip
made bindaddr config work for client and master too. Closes #909
Diffstat (limited to 'src')
-rw-r--r--src/engine/client/client.cpp7
-rw-r--r--src/engine/server/server.cpp2
-rw-r--r--src/engine/shared/config_variables.h2
-rw-r--r--src/mastersrv/mastersrv.cpp48
4 files changed, 36 insertions, 23 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index a9c86060..34923f28 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1738,8 +1738,11 @@ void CClient::Run()
 	// open socket
 	{
 		NETADDR BindAddr;
-		mem_zero(&BindAddr, sizeof(BindAddr));
-		BindAddr.type = NETTYPE_ALL;
+		if(g_Config.m_Bindaddr[0] == 0 || net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) != 0)
+		{
+			mem_zero(&BindAddr, sizeof(BindAddr));
+			BindAddr.type = NETTYPE_ALL;
+		}
 		if(!m_NetClient.Open(BindAddr, 0))
 		{
 			dbg_msg("client", "couldn't start network");
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index de84ad35..6e63f747 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1271,7 +1271,7 @@ int CServer::Run()
 
 	// start server
 	NETADDR BindAddr;
-	if(g_Config.m_SvBindaddr[0] && net_host_lookup(g_Config.m_SvBindaddr, &BindAddr, NETTYPE_ALL) == 0)
+	if(g_Config.m_Bindaddr[0] && net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) == 0)
 	{
 		// sweet!
 		BindAddr.port = g_Config.m_SvPort;
diff --git a/src/engine/shared/config_variables.h b/src/engine/shared/config_variables.h
index d92073d7..f76e69c8 100644
--- a/src/engine/shared/config_variables.h
+++ b/src/engine/shared/config_variables.h
@@ -77,7 +77,7 @@ MACRO_CONFIG_INT(GfxThreaded, gfx_threaded, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT
 MACRO_CONFIG_INT(InpMousesens, inp_mousesens, 100, 5, 100000, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Mouse sensitivity")
 
 MACRO_CONFIG_STR(SvName, sv_name, 128, "unnamed server", CFGFLAG_SERVER, "Server name")
-MACRO_CONFIG_STR(SvBindaddr, sv_bindaddr, 128, "", CFGFLAG_SERVER, "Address to bind the server to")
+MACRO_CONFIG_STR(Bindaddr, bindaddr, 128, "", CFGFLAG_CLIENT|CFGFLAG_SERVER|CFGFLAG_MASTER, "Address to bind the client/server to")
 MACRO_CONFIG_INT(SvPort, sv_port, 8303, 0, 0, CFGFLAG_SERVER, "Port to use for the server")
 MACRO_CONFIG_INT(SvExternalPort, sv_external_port, 0, 0, 0, CFGFLAG_SERVER, "External port to report to the master servers")
 MACRO_CONFIG_STR(SvMap, sv_map, 128, "dm1", CFGFLAG_SERVER, "Map to use on the server")
diff --git a/src/mastersrv/mastersrv.cpp b/src/mastersrv/mastersrv.cpp
index 632a524c..c6099139 100644
--- a/src/mastersrv/mastersrv.cpp
+++ b/src/mastersrv/mastersrv.cpp
@@ -2,6 +2,7 @@
 /* If you are missing that file, acquire a complete release at teeworlds.com.                */
 #include <base/system.h>
 
+#include <engine/config.h>
 #include <engine/console.h>
 #include <engine/kernel.h>
 #include <engine/storage.h>
@@ -326,16 +327,40 @@ int main(int argc, const char **argv) // ignore_convention
 	dbg_logger_stdout();
 	net_init();
 
-	mem_zero(&BindAddr, sizeof(BindAddr));
-	BindAddr.type = NETTYPE_ALL;
-	BindAddr.port = MASTERSERVER_PORT;
+	mem_copy(m_CountData.m_Header, SERVERBROWSE_COUNT, sizeof(SERVERBROWSE_COUNT));
+	mem_copy(m_CountDataLegacy.m_Header, SERVERBROWSE_COUNT_LEGACY, sizeof(SERVERBROWSE_COUNT_LEGACY));
+
+	IKernel *pKernel = IKernel::Create();
+	IStorage *pStorage = CreateStorage("Teeworlds", argc, argv);
+	IConfig *pConfig = CreateConfig();
+	m_pConsole = CreateConsole(CFGFLAG_MASTER);
+	
+	bool RegisterFail = !pKernel->RegisterInterface(pStorage);
+	RegisterFail |= !pKernel->RegisterInterface(m_pConsole);
+	RegisterFail |= !pKernel->RegisterInterface(pConfig);
+
+	if(RegisterFail)
+		return -1;
+
+	pConfig->Init();
+	m_NetBan.Init(m_pConsole, pStorage);
+	if(argc > 1) // ignore_convention
+		m_pConsole->ParseArguments(argc-1, &argv[1]); // ignore_convention
+
+	if(g_Config.m_Bindaddr[0] && net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) == 0)
+		BindAddr.port = MASTERSERVER_PORT;
+	else
+	{
+		mem_zero(&BindAddr, sizeof(BindAddr));
+		BindAddr.type = NETTYPE_ALL;
+		BindAddr.port = MASTERSERVER_PORT;
+	}
 
 	if(!m_NetOp.Open(BindAddr, 0))
 	{
 		dbg_msg("mastersrv", "couldn't start network (op)");
 		return -1;
 	}
-
 	BindAddr.port = MASTERSERVER_PORT+1;
 	if(!m_NetChecker.Open(BindAddr, 0))
 	{
@@ -343,21 +368,6 @@ int main(int argc, const char **argv) // ignore_convention
 		return -1;
 	}
 
-	mem_copy(m_CountData.m_Header, SERVERBROWSE_COUNT, sizeof(SERVERBROWSE_COUNT));
-	mem_copy(m_CountDataLegacy.m_Header, SERVERBROWSE_COUNT_LEGACY, sizeof(SERVERBROWSE_COUNT_LEGACY));
-
-	IKernel *pKernel = IKernel::Create();
-	IStorage *pStorage = CreateStorage("Teeworlds", argc, argv);
-
-	m_pConsole = CreateConsole(CFGFLAG_MASTER);
-	m_NetBan.Init(m_pConsole, pStorage);
-
-	bool RegisterFail = !pKernel->RegisterInterface(pStorage);
-	RegisterFail |= !pKernel->RegisterInterface(m_pConsole);
-
-	if(RegisterFail)
-		return -1;
-
 	dbg_msg("mastersrv", "started");
 
 	while(1)