bool DNSFilterEngine::getClientPolicy(const ComboAddress& ca, const std::unordered_map<std::string,bool>& discardedPolicies, Policy& pol) const
{
- // cout<<"Got question for "<<qname<<" from "<<ca.toString()<<endl;
- std::vector<bool> zoneEnabled(d_zones.size());
- size_t count = 0;
- bool allEmpty = true;
+ // cout<<"Got question from "<<ca.toString()<<endl;
for (const auto& z : d_zones) {
- bool enabled = true;
if (z->getPriority() >= pol.getPriority()) {
- enabled = false;
- } else {
- const auto& zoneName = z->getName();
- if (discardedPolicies.find(zoneName) != discardedPolicies.end()) {
- enabled = false;
- }
- else {
- if (z->hasClientPolicies()) {
- allEmpty = false;
- }
- else {
- enabled = false;
- }
- }
+ break;
}
-
- zoneEnabled[count] = enabled;
- ++count;
- }
-
- if (allEmpty) {
- return false;
- }
-
- count = 0;
- for (const auto& z : d_zones) {
- if (!zoneEnabled[count]) {
- ++count;
+ const auto& zoneName = z->getName();
+ if (discardedPolicies.find(zoneName) != discardedPolicies.end()) {
continue;
}
// cerr<<"Had a hit on the IP address ("<<ca.toString()<<") of the client"<<endl;
return true;
}
-
- ++count;
}
-
return false;
}