about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2012-03-04 12:47:16 +0100
committeroy <Tom_Adams@web.de>2013-02-24 17:26:59 +0100
commit13d06e45ac14d5f584462d0611f85a4e1dafcf17 (patch)
tree473e7b8e8bff5c9efb0c06b51acef10e6a1a5a43
parentffd89938d7caebe2ecd7bf18d00283e6aadea981 (diff)
downloadzcatch-13d06e45ac14d5f584462d0611f85a4e1dafcf17.tar.gz
zcatch-13d06e45ac14d5f584462d0611f85a4e1dafcf17.zip
fixed used nettype in server browser and try to use ipv4 and ipv6 socket when using a bindaddr. Closes #940
-rw-r--r--src/engine/client/client.cpp9
-rw-r--r--src/engine/client/serverbrowser.cpp2
-rw-r--r--src/engine/server/server.cpp1
-rw-r--r--src/engine/shared/econ.cpp4
-rw-r--r--src/engine/shared/network.h2
-rw-r--r--src/mastersrv/mastersrv.cpp4
6 files changed, 18 insertions, 4 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index d5da647b..6d1d8f4f 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1746,14 +1746,19 @@ void CClient::Run()
 	// open socket
 	{
 		NETADDR BindAddr;
-		if(g_Config.m_Bindaddr[0] == 0 || net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) != 0)
+		if(g_Config.m_Bindaddr[0] && net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) == 0)
+		{
+			// got bindaddr
+			BindAddr.type = NETTYPE_ALL;
+		}
+		else
 		{
 			mem_zero(&BindAddr, sizeof(BindAddr));
 			BindAddr.type = NETTYPE_ALL;
 		}
 		if(!m_NetClient.Open(BindAddr, 0))
 		{
-			dbg_msg("client", "couldn't start network");
+			dbg_msg("client", "couldn't open socket");
 			return;
 		}
 	}
diff --git a/src/engine/client/serverbrowser.cpp b/src/engine/client/serverbrowser.cpp
index 4dda9da9..588194ea 100644
--- a/src/engine/client/serverbrowser.cpp
+++ b/src/engine/client/serverbrowser.cpp
@@ -495,7 +495,7 @@ void CServerBrowser::Refresh(int Type)
 		/* do the broadcast version */
 		Packet.m_ClientID = -1;
 		mem_zero(&Packet, sizeof(Packet));
-		Packet.m_Address.type = NETTYPE_ALL|NETTYPE_LINK_BROADCAST;
+		Packet.m_Address.type = m_pNetClient->NetType()|NETTYPE_LINK_BROADCAST;
 		Packet.m_Flags = NETSENDFLAG_CONNLESS;
 		Packet.m_DataSize = sizeof(Buffer);
 		Packet.m_pData = Buffer;
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 34eaddc4..704d4e37 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1270,6 +1270,7 @@ int CServer::Run()
 	if(g_Config.m_Bindaddr[0] && net_host_lookup(g_Config.m_Bindaddr, &BindAddr, NETTYPE_ALL) == 0)
 	{
 		// sweet!
+		BindAddr.type = NETTYPE_ALL;
 		BindAddr.port = g_Config.m_SvPort;
 	}
 	else
diff --git a/src/engine/shared/econ.cpp b/src/engine/shared/econ.cpp
index eb7df872..e0df8635 100644
--- a/src/engine/shared/econ.cpp
+++ b/src/engine/shared/econ.cpp
@@ -75,7 +75,11 @@ void CEcon::Init(IConsole *pConsole, CNetBan *pNetBan)
 
 	NETADDR BindAddr;
 	if(g_Config.m_EcBindaddr[0] && net_host_lookup(g_Config.m_EcBindaddr, &BindAddr, NETTYPE_ALL) == 0)
+	{
+		// got bindaddr
+		BindAddr.type = NETTYPE_ALL;
 		BindAddr.port = g_Config.m_EcPort;
+	}
 	else
 	{
 		mem_zero(&BindAddr, sizeof(BindAddr));
diff --git a/src/engine/shared/network.h b/src/engine/shared/network.h
index dd43389e..d633c3fc 100644
--- a/src/engine/shared/network.h
+++ b/src/engine/shared/network.h
@@ -353,7 +353,7 @@ public:
 	int ResetErrorString();
 
 	// error and state
-	int NetType() { return m_Socket.type; }
+	int NetType() const { return m_Socket.type; }
 	int State();
 	int GotProblems();
 	const char *ErrorString();
diff --git a/src/mastersrv/mastersrv.cpp b/src/mastersrv/mastersrv.cpp
index c88a9e78..922577ca 100644
--- a/src/mastersrv/mastersrv.cpp
+++ b/src/mastersrv/mastersrv.cpp
@@ -348,7 +348,11 @@ int main(int argc, const char **argv) // 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)
+	{
+		// got bindaddr
+		BindAddr.type = NETTYPE_ALL;
 		BindAddr.port = MASTERSERVER_PORT;
+	}
 	else
 	{
 		mem_zero(&BindAddr, sizeof(BindAddr));