]> granicus.if.org Git - pdns/commitdiff
fix up dnsdist so it matches our blogpost wrt decaying server selection policies
authorbert hubert <bert.hubert@netherlabs.nl>
Thu, 12 Mar 2015 09:32:43 +0000 (10:32 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Thu, 12 Mar 2015 09:32:43 +0000 (10:32 +0100)
pdns/dnsdist.cc

index dfe262ec8d1fca8cd9a8d2434bf581b5972502e2..de7cd2a33367687e43915ba8694bd3f22800900f 100644 (file)
@@ -168,18 +168,14 @@ shared_ptr<DownstreamState> firstAvailable(const NumberedServerVector& servers,
     if(d.second->isUp() && d.second->qps.check())
       return d.second;
   }
-  static int counter=0;
-  ++counter;
-  if(servers.empty())
-    return shared_ptr<DownstreamState>();
-  return servers[counter % servers.size()].second;
+  return leastOutstanding(servers, remote, qname, qtype, dh);
 }
 
 shared_ptr<DownstreamState> leastOutstanding(const NumberedServerVector& servers, const ComboAddress& remote, const DNSName& qname, uint16_t qtype, dnsheader* dh)
 {
   vector<pair<pair<int,int>, shared_ptr<DownstreamState>>> poss;
-
-  for(auto& d : servers) {      // w=1, w=10 -> 1, 11
+  poss.reserve(servers.size());
+  for(auto& d : servers) {    
     if(d.second->isUp()) {
       poss.push_back({make_pair(d.second->outstanding.load(), d.second->order), d.second});
     }