From: Remi Gacogne Date: Fri, 7 May 2021 09:10:33 +0000 (+0200) Subject: dnsdist: Convert remaining Action mutexes to LockGuarded X-Git-Tag: dnsdist-1.7.0-alpha1~62^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=deaea929d3a55034346b4ae6192e47566ee6d020;p=thirdparty%2Fpdns.git dnsdist: Convert remaining Action mutexes to LockGuarded --- diff --git a/pdns/dnsdist-lua-actions.cc b/pdns/dnsdist-lua-actions.cc index 236bd28fee..b5c0703967 100644 --- a/pdns/dnsdist-lua-actions.cc +++ b/pdns/dnsdist-lua-actions.cc @@ -83,13 +83,12 @@ public: class QPSAction : public DNSAction { public: - QPSAction(int limit) : d_qps(limit, limit) + QPSAction(int limit) : d_qps(QPSLimiter(limit, limit)) { } DNSAction::Action operator()(DNSQuestion* dq, std::string* ruleresult) const override { - std::lock_guard guard(d_lock); - if (d_qps.check()) { + if (d_qps.lock()->check()) { return Action::None; } else { @@ -98,11 +97,10 @@ public: } std::string toString() const override { - return "qps limit to "+std::to_string(d_qps.getRate()); + return "qps limit to "+std::to_string(d_qps.lock()->getRate()); } private: - mutable std::mutex d_lock; - QPSLimiter d_qps; + mutable LockGuarded d_qps; }; class DelayAction : public DNSAction @@ -293,11 +291,10 @@ private: class QPSPoolAction : public DNSAction { public: - QPSPoolAction(unsigned int limit, const std::string& pool) : d_qps(limit, limit), d_pool(pool) {} + QPSPoolAction(unsigned int limit, const std::string& pool) : d_qps(QPSLimiter(limit, limit)), d_pool(pool) {} DNSAction::Action operator()(DNSQuestion* dq, std::string* ruleresult) const override { - std::lock_guard guard(d_lock); - if (d_qps.check()) { + if (d_qps.lock()->check()) { *ruleresult = d_pool; return Action::Pool; } @@ -307,13 +304,12 @@ public: } std::string toString() const override { - return "max " +std::to_string(d_qps.getRate())+" to pool "+d_pool; + return "max " +std::to_string(d_qps.lock()->getRate())+" to pool "+d_pool; } private: - mutable std::mutex d_lock; - QPSLimiter d_qps; - std::string d_pool; + mutable LockGuarded d_qps; + const std::string d_pool; }; class RCodeAction : public DNSAction