Checklist.cc
Go to the documentation of this file.
81ACLChecklist::matchChild(const Acl::InnerNode *current, Acl::Nodes::const_iterator pos, const ACL *child)
128 debugs(28, 2, this << " a slow ACL resumes by going async again! (loop #" << asyncLoopDepth_ << ")");
248 debugs(28, DBG_CRITICAL, "SECURITY ERROR: ACL " << this << " checked with nothing to match against!!");
389 const bool found = std::find(bannedActions_.begin(), bannedActions_.end(), action) != bannedActions_.end();
390 debugs(28, 5, "Action '" << action << "/" << action.kind << (found ? "' is " : "' is not") << " banned");
Definition: Checklist.h:47
virtual void checkForAsync(ACLChecklist *) const =0
Definition: Checklist.h:55
void checkForAsync(ACLChecklist *) const override
Definition: Checklist.cc:206
Definition: Checklist.h:27
void markFinished(const Acl::Answer &newAnswer, const char *reason)
Definition: Checklist.cc:57
void banAction(const Acl::Answer &action)
add action to the list of banned actions
Definition: Checklist.cc:395
std::vector< Acl::Answer > bannedActions_
the list of actions which must ignored during acl checks
Definition: Checklist.h:245
void preCheck(const char *what)
prepare for checking ACLs; called once per check
Definition: Checklist.cc:67
void checkCallback(Acl::Answer answer)
Calls non-blocking check callback with the answer and destroys self.
Definition: Checklist.cc:158
void nonBlockingCheck(ACLCB *callback, void *callback_data)
Definition: Checklist.cc:237
void resumeNonBlockingCheck(AsyncState *state)
Definition: Checklist.cc:261
std::stack< Breadcrumb > matchPath
suspended (due to an async lookup) matches() in the ACL tree
Definition: Checklist.h:243
bool prepNonBlocking()
common parts of nonBlockingCheck() and resumeNonBlockingCheck()
Definition: Checklist.cc:20
bool bannedAction(const Acl::Answer &action) const
whether the action is banned or not
Definition: Checklist.cc:387
void matchAndFinish()
performs (or resumes) an ACL tree match and, if successful, sets the action
Definition: Checklist.cc:291
unsigned asyncLoopDepth_
how many times the current async state has resumed
Definition: Checklist.h:238
bool matchChild(const Acl::InnerNode *parent, Acl::Nodes::const_iterator pos, const ACL *child)
Definition: Checklist.cc:81
bool asyncInProgress() const
async call has been started and has not finished (or failed) yet
Definition: Checklist.h:151
Definition: Acl.h:128
An intermediate ACL tree node. Manages a collection of child tree nodes.
Definition: InnerNode.h:22
bool resumeMatchingAt(ACLChecklist *checklist, Acl::Nodes::const_iterator pos) const
Resumes matching (suspended by an async call) at the given position.
Definition: InnerNode.cc:95
Answer winningAction() const
Returns the corresponding action after a successful tree match.
Definition: Tree.cc:17
static bool action(int fd, size_t metasize, const char *fn, const char *url, const SquidMetaList &meta)
Definition: purge.cc:315