]> git.ipfire.org Git - thirdparty/squid.git/blob - src/ACLSslErrorData.cc
Merge from trunk
[thirdparty/squid.git] / src / ACLSslErrorData.cc
1 /*
2 * $Id: ACLSslErrorData.cc,v 1.1 2008/02/11 22:24:39 rousskov Exp $
3 */
4
5 #include "squid.h"
6 #include "ACLSslErrorData.h"
7 #include "ACLChecklist.h"
8 #include "wordlist.h"
9
10 ACLSslErrorData::ACLSslErrorData() : values (NULL)
11 {}
12
13 ACLSslErrorData::ACLSslErrorData(ACLSslErrorData const &old) : values (NULL)
14 {
15 assert (!old.values);
16 }
17
18 ACLSslErrorData::~ACLSslErrorData()
19 {
20 if (values)
21 delete values;
22 }
23
24 bool
25 ACLSslErrorData::match(ssl_error_t toFind)
26 {
27 return values->findAndTune (toFind);
28 }
29
30 /* explicit instantiation required for some systems */
31
32 template cbdata_type List<ssl_error_t>::CBDATA_List;
33
34 wordlist *
35 ACLSslErrorData::dump()
36 {
37 wordlist *W = NULL;
38 List<ssl_error_t> *data = values;
39
40 while (data != NULL) {
41 wordlistAdd(&W, sslFindErrorString(data->element));
42 data = data->next;
43 }
44
45 return W;
46 }
47
48 void
49 ACLSslErrorData::parse()
50 {
51 List<ssl_error_t> **Tail;
52 char *t = NULL;
53
54 for (Tail = &values; *Tail; Tail = &((*Tail)->next));
55 while ((t = strtokFile())) {
56 List<ssl_error_t> *q = new List<ssl_error_t>(sslParseErrorString(t));
57 *(Tail) = q;
58 Tail = &q->next;
59 }
60 }
61
62 bool
63 ACLSslErrorData::empty() const
64 {
65 return values == NULL;
66 }
67
68 ACLData<ssl_error_t> *
69 ACLSslErrorData::clone() const
70 {
71 /* Splay trees don't clone yet. */
72 assert (!values);
73 return new ACLSslErrorData(*this);
74 }