50 const auto checklist =
Filled(ch);
52 assert(checklist !=
nullptr && checklist->request !=
nullptr);
54 if (data->match(checklist->request->url.host())) {
59 debugs(28, 3,
"No-lookup DNS ACL '" << name <<
"' for " << checklist->request->url.host());
64 if (!checklist->request->url.hostIsNumeric()) {
69 if (checklist->dst_rdns) {
70 debugs(28, 3,
"'" << name <<
"' match with stored rDNS '" << checklist->dst_rdns <<
"' for " << checklist->request->url.host());
71 return data->match(checklist->dst_rdns);
75 if (!checklist->dst_addr.fromHost(checklist->request->url.host())) {
77 checklist->dst_rdns =
xstrdup(
"invalid");
84 checklist->dst_rdns =
xstrdup(fqdn);
85 return data->match(fqdn);
86 }
else if (!checklist->destinationDomainChecked()) {
87 debugs(28, 3,
"Can't yet compare '" << name <<
"' ACL for " << checklist->request->url.host());
93 return data->match(
"none");
static void StartLookup(ACLFilledChecklist &cl, const Acl::Node &)
static void LookupDone(const char *, const Dns::LookupDetails &, void *data)
const Acl::Options & options() override
Acl::BooleanOptionValue lookupBanned
Are DNS lookups allowed?
int match(ACLChecklist *) override
Matches the actual data in checklist against this Acl::Node.