]> git.ipfire.org Git - thirdparty/squid.git/blame - src/ACLSslErrorData.cc
Importing SslBump feature from Squid3 ssl-bump branch:
[thirdparty/squid.git] / src / ACLSslErrorData.cc
CommitLineData
1b26be8f 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
10ACLSslErrorData::ACLSslErrorData() : values (NULL)
11{}
12
13ACLSslErrorData::ACLSslErrorData(ACLSslErrorData const &old) : values (NULL)
14{
15 assert (!old.values);
16}
17
18ACLSslErrorData::~ACLSslErrorData()
19{
20 if (values)
21 delete values;
22}
23
24bool
25ACLSslErrorData::match(ssl_error_t toFind)
26{
27 return values->findAndTune (toFind);
28}
29
30/* explicit instantiation required for some systems */
31
32template cbdata_type List<ssl_error_t>::CBDATA_List;
33
34wordlist *
35ACLSslErrorData::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
48void
49ACLSslErrorData::parse()
50{
51 List<ssl_error_t> **Tail;
52 char *t = NULL;
53
54 for (Tail = &values; *Tail; Tail = &((*Tail)->next))
55
56 ;
57 while ((t = strtokFile())) {
58 List<ssl_error_t> *q = new List<ssl_error_t>(sslParseErrorString(t));
59 *(Tail) = q;
60 Tail = &q->next;
61 }
62}
63
64bool
65ACLSslErrorData::empty() const
66{
67 return values == NULL;
68}
69
70ACLData<ssl_error_t> *
71ACLSslErrorData::clone() const
72{
73 /* Splay trees don't clone yet. */
74 assert (!values);
75 return new ACLSslErrorData(*this);
76}