From: Remi Gacogne Date: Mon, 10 May 2021 15:57:53 +0000 (+0200) Subject: rec: Convert RPZ loader stats to LockGuarded X-Git-Tag: dnsdist-1.7.0-alpha1~62^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fb64ae195aed8edfbf085d1b8448cbf300157b2;p=thirdparty%2Fpdns.git rec: Convert RPZ loader stats to LockGuarded --- diff --git a/pdns/rpzloader.cc b/pdns/rpzloader.cc index 77cf0926c2..67896eac15 100644 --- a/pdns/rpzloader.cc +++ b/pdns/rpzloader.cc @@ -4,6 +4,7 @@ #include "ixfr.hh" #include "syncres.hh" #include "axfr-retriever.hh" +#include "lock.hh" #include "logger.hh" #include "logging.hh" #include "rec-lua-conf.hh" @@ -274,16 +275,18 @@ std::shared_ptr loadRPZFromFile(const std::string& fname, std: return sr; } -static std::unordered_map > s_rpzStats; -static std::mutex s_rpzStatsMutex; +static LockGuarded > > s_rpzStats; shared_ptr getRPZZoneStats(const std::string& zone) { - std::lock_guard l(s_rpzStatsMutex); - if (s_rpzStats.find(zone) == s_rpzStats.end()) { - s_rpzStats[zone] = std::make_shared(); + auto stats = s_rpzStats.lock(); + auto it = stats->find(zone); + if (it == stats->end()) { + auto stat = std::make_shared(); + (*stats)[zone] = stat; + return stat; } - return s_rpzStats[zone]; + return it->second; } static void incRPZFailedTransfers(const std::string& zone)