1 /*
2 * Copyright (C) 1996-2021 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 #ifndef _SQUID_ERR_TYPE_H
10 #define _SQUID_ERR_TYPE_H
11
12 typedef enum {
13 ERR_NONE,
14
15 /* Access Permission Errors. Prefix new with ERR_ACCESS_ */
16 ERR_ACCESS_DENIED,
17 ERR_CACHE_ACCESS_DENIED,
18 ERR_CACHE_MGR_ACCESS_DENIED,
19 ERR_FORWARDING_DENIED,
20 ERR_NO_RELAY,
21 ERR_CANNOT_FORWARD,
22
23 /* TCP Errors. */
24 ERR_READ_TIMEOUT,
25 ERR_LIFETIME_EXP,
26 ERR_READ_ERROR,
27 ERR_WRITE_ERROR,
28 ERR_CONNECT_FAIL,
29 ERR_SECURE_CONNECT_FAIL,
30 ERR_SOCKET_FAILURE,
31
32 /* DNS Errors */
33 ERR_DNS_FAIL,
34 ERR_URN_RESOLVE,
35
36 /* HTTP Errors */
37 ERR_ONLY_IF_CACHED_MISS, /* failure to satisfy only-if-cached request */
38 ERR_TOO_BIG,
39 ERR_INVALID_RESP,
40 ERR_UNSUP_HTTPVERSION, /* HTTP version is not supported */
41 ERR_INVALID_REQ,
42 ERR_UNSUP_REQ,
43 ERR_INVALID_URL,
44 ERR_ZERO_SIZE_OBJECT,
45 ERR_PRECONDITION_FAILED,
46 ERR_CONFLICT_HOST,
47
48 /* FTP Errors */
49 ERR_FTP_DISABLED,
50 ERR_FTP_UNAVAILABLE,
51 ERR_FTP_FAILURE,
52 ERR_FTP_PUT_ERROR,
53 ERR_FTP_NOT_FOUND,
54 ERR_FTP_FORBIDDEN,
55 ERR_FTP_PUT_CREATED, /* !error,a note that the file was created */
56 ERR_FTP_PUT_MODIFIED, /* modified, !created */
57
58 /* ESI Errors */
59 ERR_ESI, /* Failure to perform ESI processing */
60
61 /* ICAP Errors */
62 ERR_ICAP_FAILURE,
63
64 /* Squid problem */
65 ERR_GATEWAY_FAILURE,
66
67 /* Special Cases */
68 ERR_DIR_LISTING, /* Display of remote directory (FTP, Gopher) */
69 ERR_SQUID_SIGNATURE, /* not really an error */
70 ERR_SHUTTING_DOWN,
71 ERR_PROTOCOL_UNKNOWN,
72
73 // NOTE: error types defined below TCP_RESET are optional and do not generate
74 // a log warning if the files are missing
75 TCP_RESET, // Send TCP RST packet instead of error page
76
77 ERR_SECURE_ACCEPT_FAIL, // Rejects the SSL connection intead of error page
78 ERR_REQUEST_START_TIMEOUT, // Aborts the connection instead of error page
79 ERR_REQUEST_PARSE_TIMEOUT, // Aborts the connection instead of error page
80
81 /* Cache Manager GUI can install a manager index/home page */
82 MGR_INDEX,
83
84 ERR_MAX
85 } err_type;
86
87 extern const char *err_type_str[];
88
89 inline
90 err_type
errorTypeByName(const char * name)91 errorTypeByName(const char *name)
92 {
93 for (int i = 0; i < ERR_MAX; ++i)
94 if (strcmp(name, err_type_str[i]) == 0)
95 return (err_type)i;
96 return ERR_MAX;
97 }
98
99 inline
100 const char *
errorTypeName(err_type err)101 errorTypeName(err_type err)
102 {
103 if (err < ERR_NONE || err >= ERR_MAX)
104 return "UNKNOWN";
105 return err_type_str[err];
106 }
107
108 #endif /* _SQUID_ERR_TYPE_H */
109
110