Skip to content

Commit

Permalink
fix gcc build failure
Browse files Browse the repository at this point in the history
  • Loading branch information
dr3mro committed Dec 2, 2024
1 parent f6e0e4f commit f6b72e0
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 25 deletions.
42 changes: 21 additions & 21 deletions src/gatekeeper/dosdetector/dosdetector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <fmt/format.h>
#include <xxhash.h>

#include <algorithm>
#include <regex>
#include <thread>

Expand Down Expand Up @@ -38,7 +39,7 @@ DOSDetector::~DOSDetector()
}
}

DOSDetector::Status DOSDetector::is_dos_attack(const Request &request)
DOSDetector::Status DOSDetector::is_dos_attack(const Request &&request)
{
try
{
Expand All @@ -53,7 +54,7 @@ DOSDetector::Status DOSDetector::is_dos_attack(const Request &request)

if (isRateLimited(request.ip))
{
processRequest<const DOSDetector::Request &>(request);
processRequest(request);
return Status::RATELIMITED;
}

Expand All @@ -62,7 +63,7 @@ DOSDetector::Status DOSDetector::is_dos_attack(const Request &request)
return Status::BANNED;
}

return processRequest<const DOSDetector::Request &>(request);
return processRequest(request);
}
catch (const std::exception &e)
{
Expand Down Expand Up @@ -220,22 +221,22 @@ inline bool __attribute((always_inline)) DOSDetector::regexFind(std::string_view
{
std::lock_guard<std::mutex> lock(mtx);

return std::any_of(list.begin(), list.end(),
[&remote_ip](const std::string_view &pattern)
{
try
{
std::regex regex_pattern(pattern.data());
return std::regex_search(remote_ip.data(), regex_pattern);
}
catch (const std::regex_error &e)
{
Message::ErrorMessage("Exception due to invalid regex pattern.");
Message::CriticalMessage(e.what());

return false;
}
});
return std::ranges::any_of(list,
[&remote_ip](const std::string_view &pattern)
{
try
{
std::regex regex_pattern((std::string(pattern)));
return std::regex_search((std::string(remote_ip)), regex_pattern);
}
catch (const std::regex_error &e)
{
Message::ErrorMessage("Exception due to invalid regex pattern.");
Message::CriticalMessage(e.what());

return false;
}
});
}
catch (const std::exception &e)
{
Expand Down Expand Up @@ -305,8 +306,7 @@ inline bool __attribute((always_inline)) DOSDetector::checkStatus(std::string_vi
}
}

template <typename Request>
DOSDetector::Status DOSDetector::processRequest(const Request &&request)
DOSDetector::Status DOSDetector::processRequest(const Request &request)
{
try
{
Expand Down
5 changes: 2 additions & 3 deletions src/gatekeeper/dosdetector/dosdetector.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class DOSDetector

DOSDetector();
virtual ~DOSDetector();
DOSDetector::Status is_dos_attack(const Request &request);
DOSDetector::Status is_dos_attack(const Request &&request);

private:
std::shared_ptr<Configurator> configurator_ = Store::getObject<Configurator>();
Expand Down Expand Up @@ -72,6 +72,5 @@ class DOSDetector
template <typename Map, typename Mutex>
inline bool __attribute((always_inline)) checkStatus(std::string_view remote_ip, Map &ip_map, Mutex &mtx);

template <typename Request>
DOSDetector::Status processRequest(const Request &&request);
Status processRequest(const Request &request);
};
2 changes: 1 addition & 1 deletion src/gatekeeper/gatekeeper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ void GateKeeper::removeSession(std::optional<uint64_t> client_id, const std::str
}
// bool GateKeeper::hasPermission(CALLBACK_&& callback, std::string_view data) { return false; }

DOSDetector::Status GateKeeper::isDosAttack(const DOSDetector::Request& request) { return dosDetector_->is_dos_attack(request); }
DOSDetector::Status GateKeeper::isDosAttack(const DOSDetector::Request& request) { return dosDetector_->is_dos_attack(std::move(request)); }

std::optional<jsoncons::json> GateKeeper::parse_data(std::string_view data, std::string& message, bool& success)
{
Expand Down

0 comments on commit f6b72e0

Please sign in to comment.