]> git.ipfire.org Git - thirdparty/squid.git/blob - src/acl/TransactionInitiator.cc
Bug 5428: Warn if pkg-config is not found (#1902)
[thirdparty/squid.git] / src / acl / TransactionInitiator.cc
1 /*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 /* DEBUG: section 28 Access Control */
10
11 #include "squid.h"
12 #include "acl/FilledChecklist.h"
13 #include "acl/TransactionInitiator.h"
14 #include "cache_cf.h"
15 #include "debug/Stream.h"
16 #include "HttpRequest.h"
17 #include "MasterXaction.h"
18 #include "SquidConfig.h"
19
20 Acl::TransactionInitiator::TransactionInitiator (const char *aClass) : class_ (aClass), initiators_(0)
21 {}
22
23 char const *
24 Acl::TransactionInitiator::typeString() const
25 {
26 return class_;
27 }
28
29 bool
30 Acl::TransactionInitiator::empty () const
31 {
32 return false;
33 }
34
35 void
36 Acl::TransactionInitiator::parse()
37 {
38 while (const char *s = ConfigParser::strtokFile()) {
39 initiators_ |= XactionInitiator::ParseInitiators(s);
40 cfgWords.push_back(SBuf(s));
41 }
42 }
43
44 int
45 Acl::TransactionInitiator::match(ACLChecklist *checklist)
46 {
47 ACLFilledChecklist *filled = Filled((ACLChecklist*)checklist);
48 assert(filled->request);
49 assert(filled->request->masterXaction);
50 const XactionInitiator requestInitiator = filled->request->masterXaction->initiator;
51 return requestInitiator.in(initiators_) ? 1 : 0;
52 }
53
54 SBufList
55 Acl::TransactionInitiator::dump() const
56 {
57 return cfgWords;
58 }
59