diff options
-rw-r--r-- | include/bancache.h | 3 | ||||
-rw-r--r-- | src/bancache.cpp | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/bancache.h b/include/bancache.h index d69306d7a..5ce8193b6 100644 --- a/include/bancache.h +++ b/include/bancache.h @@ -66,6 +66,9 @@ class CoreExport BanCacheManager : public classbase * @param reason The reason for the ban. Left .empty() if it's a negative match. */ BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason); + + // Overridden to allow an optional number of seconds before expiry + BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds); BanCacheHit *GetHit(const std::string &ip); bool RemoveHit(BanCacheHit *b); diff --git a/src/bancache.cpp b/src/bancache.cpp index 3678dda0b..2254a117b 100644 --- a/src/bancache.cpp +++ b/src/bancache.cpp @@ -29,6 +29,19 @@ BanCacheHit *BanCacheManager::AddHit(const std::string &ip, const std::string &t return b; } +BanCacheHit *BanCacheManager::AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds) +{ + BanCacheHit *b; + + if (this->BanHash->find(ip) != this->BanHash->end()) // can't have two cache entries on the same IP, sorry.. + return NULL; + + b = new BanCacheHit(ServerInstance, ip, type, reason, seconds); + + this->BanHash->insert(std::make_pair(ip, b)); + return b; +} + BanCacheHit *BanCacheManager::GetHit(const std::string &ip) { BanCacheHash::iterator i = this->BanHash->find(ip); |