AclMatchedName = _acl->name;
debugs(28, 3, "ACLList::matches: checking " << (op ? null_string : "!") << _acl->name);
- if (_acl->checklistMatches(checklist) != op) {
- debugs(28, 4, "ACLList::matches: result is false");
- return false;
+ bool result = false;
+ if (_acl->checklistMatches(checklist) == 1) {
+ debugs(28, 5, _acl->name << " matched" << (op ? "." : ", negating."));
+ result = (op != 0);
+ } else if (checklist->finished()) {
+ debugs(28, 5, _acl->name << " failed.");
+ result = false;
+ } else if (checklist->asyncNeeded()) {
+ debugs(28, 5, _acl->name << " needs async lookup");
+ result = false;
+ } else {
+ debugs(28, 5, _acl->name << " mismatched" << (op ? "." : ", negating."));
+ result = (op == 0);
}
- debugs(28, 4, "ACLList::matches: result is true");
- return true;
+ debugs(28, 4, (op ? null_string : "!") << _acl->name << " result is " <<
+ (result ? "true" : "false"));
+ return result;
}
/*********************/