00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00028 #include "reason_phrase.h"
00029
00030 #ifndef NULL
00031 #define NULL (void*)0
00032 #endif
00033
00034 static const char *invalid_hundred[] = { NULL };
00035
00036 static const char *one_hundred[] = {
00037 "Continue",
00038 "Switching Protocols",
00039 "Processing"
00040 };
00041
00042 static const char *two_hundred[] = {
00043 "OK",
00044 "Created",
00045 "Accepted",
00046 "Non-Authoritative Information",
00047 "No Content",
00048 "Reset Content",
00049 "Partial Content",
00050 "Multi Status"
00051 };
00052
00053 static const char *three_hundred[] = {
00054 "Multiple Choices",
00055 "Moved Permanently",
00056 "Moved Temporarily",
00057 "See Other",
00058 "Not Modified",
00059 "Use Proxy",
00060 "Switch Proxy",
00061 "Temporary Redirect"
00062 };
00063
00064 static const char *four_hundred[] = {
00065 "Bad Request",
00066 "Unauthorized",
00067 "Payment Required",
00068 "Forbidden",
00069 "Not Found",
00070 "Method Not Allowed",
00071 "Not Acceptable",
00072 "Proxy Authentication Required",
00073 "Request Time-out",
00074 "Conflict",
00075 "Gone",
00076 "Length Required",
00077 "Precondition Failed",
00078 "Request Entity Too Large",
00079 "Request-URI Too Large",
00080 "Unsupported Media Type",
00081 "Requested Range Not Satisfiable",
00082 "Expectation Failed",
00083 "Unknown",
00084 "Unknown",
00085 "Unknown",
00086 "Unknown",
00087 "Unprocessable Entity",
00088 "Locked",
00089 "Failed Dependency",
00090 "Unordered Collection",
00091 "Upgrade Required",
00092 "Unknown",
00093 "Unknown",
00094 "Unknown",
00095 "Unknown",
00096 "Unknown",
00097 "Unknown",
00098 "Unknown",
00099 "Unknown",
00100 "Unknown",
00101 "Unknown",
00102 "Unknown",
00103 "Unknown",
00104 "Unknown",
00105 "Unknown",
00106 "Unknown",
00107 "Unknown",
00108 "Unknown",
00109 "No Response",
00110 "Unknown",
00111 "Unknown",
00112 "Unknown",
00113 "Unknown",
00114 "Retry With",
00115 "Blocked by Windows Parental Controls",
00116 "Unavailable For Legal Reasons"
00117 };
00118
00119 static const char *five_hundred[] = {
00120 "Internal Server Error",
00121 "Not Implemented",
00122 "Bad Gateway",
00123 "Service Unavailable",
00124 "Gateway Time-out",
00125 "HTTP Version not supported",
00126 "Variant Also Negotiates",
00127 "Insufficient Storage",
00128 "Unknown",
00129 "Bandwidth Limit Exceeded",
00130 "Not Extended"
00131 };
00132
00133
00134 struct MHD_Reason_Block
00135 {
00136 unsigned int max;
00137 const char **data;
00138 };
00139
00140 #define BLOCK(m) { (sizeof(m) / sizeof(char*)), m }
00141
00142 static const struct MHD_Reason_Block reasons[] = {
00143 BLOCK (invalid_hundred),
00144 BLOCK (one_hundred),
00145 BLOCK (two_hundred),
00146 BLOCK (three_hundred),
00147 BLOCK (four_hundred),
00148 BLOCK (five_hundred),
00149 };
00150
00151 const char *
00152 MHD_get_reason_phrase_for (unsigned int code)
00153 {
00154 if ( (code >= 100) &&
00155 (code < 600) &&
00156 (reasons[code / 100].max > (code % 100)) )
00157 return reasons[code / 100].data[code % 100];
00158 return "Unknown";
00159 }