From: Charles-Henri Bruyand Date: Tue, 31 Jul 2018 16:03:28 +0000 (+0200) Subject: ensure server's weight is properly bounded X-Git-Tag: dnsdist-1.3.3~148^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a2bbe8c7b3964ddd34e8cbb56b1004152383925;p=thirdparty%2Fpdns.git ensure server's weight is properly bounded --- diff --git a/pdns/dnsdist-lua-bindings.cc b/pdns/dnsdist-lua-bindings.cc index 5eb25e1ad2..c20aa10d5b 100644 --- a/pdns/dnsdist-lua-bindings.cc +++ b/pdns/dnsdist-lua-bindings.cc @@ -115,7 +115,10 @@ void setupLuaBindings(bool client) g_lua.registerFunction("getName", &DownstreamState::getName); g_lua.registerFunction("getNameWithAddr", &DownstreamState::getNameWithAddr); g_lua.registerMember("upStatus", &DownstreamState::upStatus); - g_lua.registerMember("weight", &DownstreamState::weight); + g_lua.registerMember("weight", + [](const DownstreamState& s) -> int {return s.weight;}, + [](DownstreamState& s, int newWeight) {s.setWeight(newWeight);} + ); g_lua.registerMember("order", &DownstreamState::order); g_lua.registerMember("name", &DownstreamState::name); diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index f7500f8f4b..d839f4043d 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -649,6 +649,10 @@ void DownstreamState::setId(const boost::uuids::uuid& newId) void DownstreamState::setWeight(int newWeight) { + if (newWeight < 1) { + errlog("Error setting server's weight: downstream weight value must be greater than 0."); + return ; + } weight = newWeight; if (!hashes.empty()) { hash();