about summary refs log tree commit diff
path: root/src/engine/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/shared')
-rw-r--r--src/engine/shared/network_server.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/engine/shared/network_server.cpp b/src/engine/shared/network_server.cpp
index 72966896..b2336a2f 100644
--- a/src/engine/shared/network_server.cpp
+++ b/src/engine/shared/network_server.cpp
@@ -272,11 +272,18 @@ int CNetServer::BanmasterAdd(const char *pAddrStr)
 	if(m_NumBanmasters >= MAX_BANMASTERS)
 		return 2;
 	
-	if(net_host_lookup(pAddrStr, &m_aBanmasters[m_NumBanmasters], NETTYPE_IPV4))
+	NETADDR Addr;
+	if(net_host_lookup(pAddrStr, &Addr, NETTYPE_ALL))
 		return 1;
 	
-	if(m_aBanmasters[m_NumBanmasters].port == 0)
-		m_aBanmasters[m_NumBanmasters].port = BANMASTER_PORT;
+	if(Addr.port == 0)
+		Addr.port = BANMASTER_PORT;
+
+	for(int i = 0; i < m_NumBanmasters; i++)
+		if(mem_comp(&Addr, &m_aBanmasters[i], sizeof(NETADDR)) == 0)
+			return 3;
+
+	m_aBanmasters[m_NumBanmasters] = Addr;
 	
 	m_NumBanmasters++;
 	return 0;