From: Otto Moerbeek Date: Mon, 28 Mar 2022 14:53:28 +0000 (+0200) Subject: Switch to std::fcuntion for broadcast functions. Fixes a mem leak report by scanbuild. X-Git-Tag: rec-4.7.0-beta1~25^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94f63b50e9083e76a87f964147382c64aa9e68f2;p=thirdparty%2Fpdns.git Switch to std::fcuntion for broadcast functions. Fixes a mem leak report by scanbuild. --- diff --git a/pdns/recursordist/rec-main.cc b/pdns/recursordist/rec-main.cc index dc9b1f3e85..65c25bdffa 100644 --- a/pdns/recursordist/rec-main.cc +++ b/pdns/recursordist/rec-main.cc @@ -1128,7 +1128,7 @@ static vector>& operator+=(vector -T broadcastAccFunction(const boost::function& func) +T broadcastAccFunction(const std::function& func) { if (!RecThreadInfo::self().isHandler()) { g_log << Logger::Error << "broadcastAccFunction has been called by a worker (" << RecThreadInfo::id() << ")" << endl; @@ -1165,12 +1165,12 @@ T broadcastAccFunction(const boost::function& func) return ret; } -template string broadcastAccFunction(const boost::function& fun); // explicit instantiation -template RecursorControlChannel::Answer broadcastAccFunction(const boost::function& fun); // explicit instantiation -template uint64_t broadcastAccFunction(const boost::function& fun); // explicit instantiation -template vector broadcastAccFunction(const boost::function*()>& fun); // explicit instantiation -template vector> broadcastAccFunction(const boost::function>*()>& fun); // explicit instantiation -template ThreadTimes broadcastAccFunction(const boost::function& fun); +template string broadcastAccFunction(const std::function& fun); // explicit instantiation +template RecursorControlChannel::Answer broadcastAccFunction(const std::function& fun); // explicit instantiation +template uint64_t broadcastAccFunction(const std::function& fun); // explicit instantiation +template vector broadcastAccFunction(const std::function*()>& fun); // explicit instantiation +template vector> broadcastAccFunction(const std::function>*()>& fun); // explicit instantiation +template ThreadTimes broadcastAccFunction(const std::function& fun); static int serviceMain(int argc, char* argv[]) { diff --git a/pdns/syncres.hh b/pdns/syncres.hh index cc37ca4629..c9e3abc0f1 100644 --- a/pdns/syncres.hh +++ b/pdns/syncres.hh @@ -1112,7 +1112,7 @@ extern bool g_lowercaseOutgoing; std::string reloadZoneConfiguration(); -typedef boost::function pipefunc_t; +typedef std::function pipefunc_t; void broadcastFunction(const pipefunc_t& func); void distributeAsyncFunction(const std::string& question, const pipefunc_t& func); @@ -1122,7 +1122,7 @@ int followCNAMERecords(std::vector& ret, const QType qtype, int oldre int getFakeAAAARecords(const DNSName& qname, ComboAddress prefix, vector& ret); int getFakePTRRecords(const DNSName& qname, vector& ret); -template T broadcastAccFunction(const boost::function& func); +template T broadcastAccFunction(const std::function& func); typedef std::unordered_set notifyset_t; std::tuple, std::shared_ptr> parseZoneConfiguration();