about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
authorTeetime <TeetimeTW@yahoo.de>2012-02-18 16:06:38 +0100
committerTeetime <TeetimeTW@yahoo.de>2012-02-18 16:06:38 +0100
commit6188a315289913b70e81fd1f5969171f507094f1 (patch)
treeae60bf4cd7d63cf278809d1edde93a30442b2eff /src/engine
parent011d30b4ad291d00414ac8d1e851c2e8e0274f27 (diff)
downloadzcatch-6188a315289913b70e81fd1f5969171f507094f1.tar.gz
zcatch-6188a315289913b70e81fd1f5969171f507094f1.zip
banmaster doesnt add same IPs now
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/server/server.cpp4
-rw-r--r--src/engine/shared/network_server.cpp13
2 files changed, 13 insertions, 4 deletions
diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp
index 85d27a41..e1d09d9c 100644
--- a/src/engine/server/server.cpp
+++ b/src/engine/server/server.cpp
@@ -1619,8 +1619,10 @@ void CServer::ConAddBanmaster(IConsole::IResult *pResult, void *pUser)
 		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "succesfully added banmaster");
 	else if (Result == 1)
 		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "invalid address for banmaster / net lookup failed");
-	else
+	else if(Result == 2)
 		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "too many banmasters");
+	else
+		pServer->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "server/banmaster", "banmaster already exists");
 }
 
 void CServer::ConBanmasters(IConsole::IResult *pResult, void *pUser)
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;