summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-06-13 15:14:31 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-06-13 15:14:31 +0200
commit01de0a19ad49f71f7d2a4b9fbcb80c0713a90d7d (patch)
tree4eacb23747489881a5fe4bf364479560f8b649c5
parentb071a6acd805bde6119a66481768be13102d1c2b (diff)
Change allocation of BanCacheManager::BanHash to be physically part of the object containing it
-rw-r--r--include/bancache.h6
-rw-r--r--src/bancache.cpp15
2 files changed, 8 insertions, 13 deletions
diff --git a/include/bancache.h b/include/bancache.h
index 7f51ca75e..7251596db 100644
--- a/include/bancache.h
+++ b/include/bancache.h
@@ -57,7 +57,7 @@ typedef TR1NS::unordered_map<std::string, BanCacheHit*, TR1NS::hash<std::string>
*/
class CoreExport BanCacheManager
{
- BanCacheHash* BanHash;
+ BanCacheHash BanHash;
bool RemoveIfExpired(BanCacheHash::iterator& it);
public:
@@ -77,9 +77,5 @@ class CoreExport BanCacheManager
*/
void RemoveEntries(const std::string& type, bool positive);
- BanCacheManager()
- {
- this->BanHash = new BanCacheHash();
- }
~BanCacheManager();
};
diff --git a/src/bancache.cpp b/src/bancache.cpp
index 4bb2fa82c..a49454381 100644
--- a/src/bancache.cpp
+++ b/src/bancache.cpp
@@ -23,7 +23,7 @@
BanCacheHit *BanCacheManager::AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds)
{
- BanCacheHit*& b = (*BanHash)[ip];
+ BanCacheHit*& b = BanHash[ip];
if (b != NULL) // can't have two cache entries on the same IP, sorry..
return NULL;
@@ -33,9 +33,9 @@ BanCacheHit *BanCacheManager::AddHit(const std::string &ip, const std::string &t
BanCacheHit *BanCacheManager::GetHit(const std::string &ip)
{
- BanCacheHash::iterator i = this->BanHash->find(ip);
+ BanCacheHash::iterator i = this->BanHash.find(ip);
- if (i == this->BanHash->end())
+ if (i == this->BanHash.end())
return NULL; // free and safe
if (RemoveIfExpired(i))
@@ -51,7 +51,7 @@ bool BanCacheManager::RemoveIfExpired(BanCacheHash::iterator& it)
ServerInstance->Logs->Log("BANCACHE", LOG_DEBUG, "Hit on " + it->first + " is out of date, removing!");
delete it->second;
- it = BanHash->erase(it);
+ it = BanHash.erase(it);
return true;
}
@@ -62,7 +62,7 @@ void BanCacheManager::RemoveEntries(const std::string& type, bool positive)
else
ServerInstance->Logs->Log("BANCACHE", LOG_DEBUG, "BanCacheManager::RemoveEntries(): Removing all negative hits");
- for (BanCacheHash::iterator i = BanHash->begin(); i != BanHash->end(); )
+ for (BanCacheHash::iterator i = BanHash.begin(); i != BanHash.end(); )
{
if (RemoveIfExpired(i))
continue; // updates the iterator if expired
@@ -86,7 +86,7 @@ void BanCacheManager::RemoveEntries(const std::string& type, bool positive)
/* we need to remove this one. */
ServerInstance->Logs->Log("BANCACHE", LOG_DEBUG, "BanCacheManager::RemoveEntries(): Removing a hit on " + i->first);
delete b;
- i = BanHash->erase(i);
+ i = BanHash.erase(i);
}
else
++i;
@@ -95,7 +95,6 @@ void BanCacheManager::RemoveEntries(const std::string& type, bool positive)
BanCacheManager::~BanCacheManager()
{
- for (BanCacheHash::iterator n = BanHash->begin(); n != BanHash->end(); ++n)
+ for (BanCacheHash::iterator n = BanHash.begin(); n != BanHash.end(); ++n)
delete n->second;
- delete BanHash;
}