/src/err_type.h

https://github.com/squid-cache/squid · C Header · 110 lines · 71 code · 20 blank · 19 comment · 5 complexity · 05c299f8f0ecd454b8284cab19914e19 MD5 · raw file

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