ban.cpp refactoring

This commit is contained in:
Selat 2014-03-29 10:40:33 +03:00 committed by sapier
parent dec8c43de3
commit c58b9d8da3

@ -57,18 +57,16 @@ void BanManager::load()
throw SerializationError("BanManager::load(): Couldn't open file"); throw SerializationError("BanManager::load(): Couldn't open file");
} }
for(;;) while(!is.eof() && is.good())
{ {
if(is.eof() || is.good() == false)
break;
std::string line; std::string line;
std::getline(is, line, '\n'); std::getline(is, line, '\n');
Strfnd f(line); Strfnd f(line);
std::string ip = trim(f.next("|")); std::string ip = trim(f.next("|"));
std::string name = trim(f.next("|")); std::string name = trim(f.next("|"));
if(ip.empty()) if(!ip.empty()) {
continue; m_ips[ip] = name;
m_ips[ip] = name; }
} }
m_modified = false; m_modified = false;
} }
@ -135,22 +133,15 @@ void BanManager::add(const std::string &ip, const std::string &name)
void BanManager::remove(const std::string &ip_or_name) void BanManager::remove(const std::string &ip_or_name)
{ {
JMutexAutoLock lock(m_mutex); JMutexAutoLock lock(m_mutex);
//m_ips.erase(m_ips.find(ip));
// Find out all ip-name pairs that match the ip or name
std::set<std::string> ips_to_delete;
for(std::map<std::string, std::string>::iterator for(std::map<std::string, std::string>::iterator
i = m_ips.begin(); i = m_ips.begin();
i != m_ips.end(); i++) i != m_ips.end();)
{ {
if(i->first == ip_or_name || i->second == ip_or_name) if((i->first == ip_or_name) || (i->second == ip_or_name)) {
ips_to_delete.insert(i->first); m_ips.erase(i++);
} } else {
// Erase them ++i;
for(std::set<std::string>::iterator }
i = ips_to_delete.begin();
i != ips_to_delete.end(); i++)
{
m_ips.erase(*i);
} }
m_modified = true; m_modified = true;
} }