From: Remi Gacogne Date: Mon, 18 Nov 2019 09:12:46 +0000 (+0100) Subject: dnsdist: Prevent copies when updating the State Holder X-Git-Tag: auth-4.3.0-alpha1~34^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bccee37042fd2ecc3b004d7cfe6679b960c32b0a;p=thirdparty%2Fpdns.git dnsdist: Prevent copies when updating the State Holder --- diff --git a/pdns/dnsdist-dynblocks.hh b/pdns/dnsdist-dynblocks.hh index dd834a1655..af7e38b5fe 100644 --- a/pdns/dnsdist-dynblocks.hh +++ b/pdns/dnsdist-dynblocks.hh @@ -282,7 +282,7 @@ public: } if (updated && blocks) { - g_dynblockNMG.setState(*blocks); + g_dynblockNMG.setState(std::move(*blocks)); } if (!statNodeRoot.empty()) { @@ -312,7 +312,7 @@ public: addOrRefreshBlockSMT(smtBlocks, now, name, d_suffixMatchRule, updated); } if (updated) { - g_dynblockSMT.setState(smtBlocks); + g_dynblockSMT.setState(std::move(smtBlocks)); } } } diff --git a/pdns/dnsdist-lua-actions.cc b/pdns/dnsdist-lua-actions.cc index 3cc60124c7..c6e904d414 100644 --- a/pdns/dnsdist-lua-actions.cc +++ b/pdns/dnsdist-lua-actions.cc @@ -1173,7 +1173,7 @@ private: }; template -static void addAction(GlobalStateHolder > *someRulActions, luadnsrule_t var, std::shared_ptr action, boost::optional params) { +static void addAction(GlobalStateHolder > *someRulActions, luadnsrule_t& var, std::shared_ptr& action, boost::optional& params) { setLuaSideEffect(); boost::uuids::uuid uuid; @@ -1181,8 +1181,8 @@ static void addAction(GlobalStateHolder > *someRulActions, luadnsrule_ parseRuleParams(params, uuid, creationOrder); auto rule=makeRule(var); - someRulActions->modify([rule, action, uuid, creationOrder](vector& rulactions){ - rulactions.push_back({rule, action, uuid, creationOrder}); + someRulActions->modify([&rule, &action, &uuid, creationOrder](vector& rulactions){ + rulactions.push_back({std::move(rule), std::move(action), std::move(uuid), creationOrder}); }); } @@ -1194,7 +1194,7 @@ void setupLuaActions() parseRuleParams(params, uuid, creationOrder); auto rule=makeRule(dnsrule); - DNSDistRuleAction ra({rule, action, uuid, creationOrder}); + DNSDistRuleAction ra({std::move(rule), action, uuid, creationOrder}); return std::make_shared(ra); }); diff --git a/pdns/dnsdist-lua-rules.cc b/pdns/dnsdist-lua-rules.cc index f86acf4b2b..923c0fabfd 100644 --- a/pdns/dnsdist-lua-rules.cc +++ b/pdns/dnsdist-lua-rules.cc @@ -143,7 +143,7 @@ static void rmRule(GlobalStateHolder > *someRulActions, boost::variant } rules.erase(rules.begin()+*pos); } - someRulActions->setState(rules); + someRulActions->setState(std::move(rules)); } template @@ -155,7 +155,7 @@ static void topRule(GlobalStateHolder > *someRulActions) { auto subject = *rules.rbegin(); rules.erase(std::prev(rules.end())); rules.insert(rules.begin(), subject); - someRulActions->setState(rules); + someRulActions->setState(std::move(rules)); } template @@ -175,7 +175,7 @@ static void mvRule(GlobalStateHolder > *someRespRulActions, unsigned i --to; rules.insert(rules.begin()+to, subject); } - someRespRulActions->setState(rules); + someRespRulActions->setState(std::move(rules)); } void setupLuaRules() @@ -259,7 +259,7 @@ void setupLuaRules() const auto& newruleaction = pair.second; if (newruleaction->d_action) { auto rule=makeRule(newruleaction->d_rule); - gruleactions.push_back({rule, newruleaction->d_action, newruleaction->d_id, newruleaction->d_creationOrder}); + gruleactions.push_back({std::move(rule), newruleaction->d_action, newruleaction->d_id, newruleaction->d_creationOrder}); } } });