Fixed HTTP header for 400 (Bad Request) and 501 (Not Implemented)

This commit is contained in:
goldsimon 2010-07-07 08:17:12 +00:00
parent 5afec09b38
commit c0b51ff573
3 changed files with 31 additions and 11 deletions

View File

@ -672,6 +672,10 @@ get_http_headers(struct http_state *pState, char *pszURI)
the 200 OK header. */
if (strstr(pszURI, "404")) {
pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_NOT_FOUND];
} else if (strstr(pszURI, "400")) {
pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_BAD_REQUEST];
} else if (strstr(pszURI, "501")) {
pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_NOT_IMPL];
} else {
pState->hdrs[0] = g_psHTTPHeaderStrings[HTTP_HDR_OK];
}

View File

@ -31,8 +31,7 @@ typedef struct
static const char *g_psHTTPHeaderStrings[] =
{
"Content-type: text/html\r\n\r\n",
"Content-type: text/html\r\nExpires: Fri, 10 Apr 2008 14:00:00 GMT\r\n" \
"Pragma: no-cache\r\n\r\n",
"Content-type: text/html\r\nExpires: Fri, 10 Apr 2008 14:00:00 GMT\r\nPragma: no-cache\r\n\r\n",
"Content-type: image/gif\r\n\r\n",
"Content-type: image/png\r\n\r\n",
"Content-type: image/jpeg\r\n\r\n",
@ -47,13 +46,16 @@ static const char *g_psHTTPHeaderStrings[] =
"Content-type: text/plain\r\n\r\n",
"HTTP/1.0 200 OK\r\n",
"HTTP/1.0 404 File not found\r\n",
"HTTP/1.0 400 Bad Request\r\n",
"HTTP/1.0 501 Not Implemented\r\n",
"HTTP/1.1 200 OK\r\n",
"HTTP/1.1 404 File not found\r\n",
"HTTP/1.1 400 Bad Request\r\n",
"HTTP/1.1 501 Not Implemented\r\n",
"Content-Length: ",
"Connection: Close\r\n",
"Server: "HTTPD_SERVER_AGENT"\r\n",
"\r\n<html><body><h2>404: The requested file cannot be found." \
"</h2></body></html>\r\n"
"\r\n<html><body><h2>404: The requested file cannot be found.</h2></body></html>\r\n"
};
/* Indexes into the g_psHTTPHeaderStrings array */
@ -73,12 +75,16 @@ static const char *g_psHTTPHeaderStrings[] =
#define HTTP_HDR_DEFAULT_TYPE 13 /* text/plain */
#define HTTP_HDR_OK 14 /* 200 OK */
#define HTTP_HDR_NOT_FOUND 15 /* 404 File not found */
#define HTTP_HDR_OK_11 16 /* 200 OK */
#define HTTP_HDR_NOT_FOUND_11 17 /* 404 File not found */
#define HTTP_HDR_CONTENT_LENGTH 18 /* 200 OK (HTTP 1.1) */
#define HTTP_HDR_CONN_CLOSE 19 /* 404 File not found (HTTP 1.1) */
#define HTTP_HDR_SERVER 20 /* Server: HTTPD_SERVER_AGENT */
#define DEFAULT_404_HTML 21 /* default 404 body */
#define HTTP_HDR_BAD_REQUEST 16 /* 400 Bad request */
#define HTTP_HDR_NOT_IMPL 17 /* 501 Not Implemented */
#define HTTP_HDR_OK_11 18 /* 200 OK */
#define HTTP_HDR_NOT_FOUND_11 19 /* 404 File not found */
#define HTTP_HDR_BAD_REQUEST_11 20 /* 400 Bad request */
#define HTTP_HDR_NOT_IMPL_11 21 /* 501 Not Implemented */
#define HTTP_HDR_CONTENT_LENGTH 22 /* Content-Length: (HTTP 1.1)*/
#define HTTP_HDR_CONN_CLOSE 23 /* Connection: Close (HTTP 1.1) */
#define HTTP_HDR_SERVER 24 /* Server: HTTPD_SERVER_AGENT */
#define DEFAULT_404_HTML 25 /* default 404 body */
/** A list of extension-to-HTTP header strings */
static tHTTPHeader g_psHTTPHeaders[] =

View File

@ -471,11 +471,21 @@ int file_write_http_header(FILE *data_file, const char *filename, int file_size,
}
fprintf(data_file, NEWLINE "/* HTTP header */");
if (strstr(filename, "404")) {
if (strstr(filename, "404") == filename) {
response_type = HTTP_HDR_NOT_FOUND;
if (useHttp11) {
response_type = HTTP_HDR_NOT_FOUND_11;
}
} else if (strstr(filename, "400") == filename) {
response_type = HTTP_HDR_BAD_REQUEST;
if (useHttp11) {
response_type = HTTP_HDR_BAD_REQUEST_11;
}
} else if (strstr(filename, "501") == filename) {
response_type = HTTP_HDR_NOT_IMPL;
if (useHttp11) {
response_type = HTTP_HDR_NOT_IMPL_11;
}
}
cur_string = g_psHTTPHeaderStrings[response_type];
cur_len = strlen(cur_string);