From 6188a315289913b70e81fd1f5969171f507094f1 Mon Sep 17 00:00:00 2001 From: Teetime Date: Sat, 18 Feb 2012 16:06:38 +0100 Subject: banmaster doesnt add same IPs now --- src/engine/server/server.cpp | 4 +++- src/engine/shared/network_server.cpp | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') 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; -- cgit 1.4.1