]>
Commit | Line | Data |
---|---|---|
1b26be8f | 1 | /* |
06390e4b FC |
2 | * DEBUG: none |
3 | * | |
4 | * SQUID Web Proxy Cache http://www.squid-cache.org/ | |
5 | * ---------------------------------------------------------- | |
6 | * | |
7 | * Squid is the result of efforts by numerous individuals from | |
8 | * the Internet community; see the CONTRIBUTORS file for full | |
9 | * details. Many organizations have provided support for Squid's | |
10 | * development; see the SPONSORS file for full details. Squid is | |
11 | * Copyrighted (C) 2001 by the Regents of the University of | |
12 | * California; see the COPYRIGHT file for full details. Squid | |
13 | * incorporates software developed and/or copyrighted by other | |
14 | * sources; see the CREDITS file for full details. | |
15 | * | |
16 | * This program is free software; you can redistribute it and/or modify | |
17 | * it under the terms of the GNU General Public License as published by | |
18 | * the Free Software Foundation; either version 2 of the License, or | |
19 | * (at your option) any later version. | |
20 | * | |
21 | * This program is distributed in the hope that it will be useful, | |
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
24 | * GNU General Public License for more details. | |
25 | * | |
26 | * You should have received a copy of the GNU General Public License | |
27 | * along with this program; if not, write to the Free Software | |
28 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. | |
29 | * | |
30 | * | |
31 | * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org> | |
1b26be8f | 32 | */ |
33 | ||
582c2af2 | 34 | #include "squid.h" |
3ad63615 | 35 | #include "acl/Checklist.h" |
602d9612 | 36 | #include "acl/SslErrorData.h" |
06390e4b | 37 | #include "cache_cf.h" |
1b26be8f | 38 | #include "wordlist.h" |
39 | ||
40 | ACLSslErrorData::ACLSslErrorData() : values (NULL) | |
41 | {} | |
42 | ||
43 | ACLSslErrorData::ACLSslErrorData(ACLSslErrorData const &old) : values (NULL) | |
44 | { | |
45 | assert (!old.values); | |
46 | } | |
47 | ||
48 | ACLSslErrorData::~ACLSslErrorData() | |
49 | { | |
50 | if (values) | |
51 | delete values; | |
52 | } | |
53 | ||
54 | bool | |
62a7607e | 55 | ACLSslErrorData::match(const Ssl::CertErrors *toFind) |
1b26be8f | 56 | { |
62a7607e CT |
57 | for (const Ssl::CertErrors *err = toFind; err; err = err->next ) { |
58 | if (values->findAndTune(err->element.code)) | |
fb2178bb CT |
59 | return true; |
60 | } | |
61 | return false; | |
1b26be8f | 62 | } |
63 | ||
64 | /* explicit instantiation required for some systems */ | |
d85b8894 | 65 | /** \cond AUTODOCS-IGNORE */ |
fb848822 | 66 | // AYJ: 2009-05-20 : Removing. clashes with template <int> instantiation for other ACLs. |
4fb72cb9 | 67 | // template cbdata_type Ssl::Errors::CBDATA_CbDataList; |
d85b8894 | 68 | /** \endcond */ |
1b26be8f | 69 | |
70 | wordlist * | |
71 | ACLSslErrorData::dump() | |
72 | { | |
73 | wordlist *W = NULL; | |
4fb72cb9 | 74 | Ssl::Errors *data = values; |
1b26be8f | 75 | |
76 | while (data != NULL) { | |
5e430bf3 | 77 | wordlistAdd(&W, Ssl::GetErrorName(data->element)); |
1b26be8f | 78 | data = data->next; |
79 | } | |
80 | ||
81 | return W; | |
82 | } | |
83 | ||
84 | void | |
85 | ACLSslErrorData::parse() | |
86 | { | |
4fb72cb9 | 87 | Ssl::Errors **Tail; |
1b26be8f | 88 | char *t = NULL; |
89 | ||
3d0ac046 | 90 | for (Tail = &values; *Tail; Tail = &((*Tail)->next)); |
1b26be8f | 91 | while ((t = strtokFile())) { |
cf1c09f6 | 92 | Ssl::Errors *q = Ssl::ParseErrorString(t); |
1b26be8f | 93 | *(Tail) = q; |
cf1c09f6 | 94 | Tail = &q->tail()->next; |
1b26be8f | 95 | } |
96 | } | |
97 | ||
98 | bool | |
99 | ACLSslErrorData::empty() const | |
100 | { | |
101 | return values == NULL; | |
102 | } | |
103 | ||
fb2178bb | 104 | ACLSslErrorData * |
1b26be8f | 105 | ACLSslErrorData::clone() const |
106 | { | |
107 | /* Splay trees don't clone yet. */ | |
108 | assert (!values); | |
109 | return new ACLSslErrorData(*this); | |
110 | } |