summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_special_response.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-06-02 15:24:30 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-06-02 15:24:30 +0000
commit7578ec9df43bbb31db5291f1b76359d10900a679 (patch)
tree87d7b3cb729c0e07b21d52737fd76e12a0c17d72 /src/http/ngx_http_special_response.c
parentaa3436c04c222d57498bfa34c9fdec50f07fd08d (diff)
downloadnginx-7578ec9df43bbb31db5291f1b76359d10900a679.tar.gz
nginx-7578ec9df43bbb31db5291f1b76359d10900a679.tar.bz2
nginx-0.0.1-2003-06-02-19:24:30 import
Diffstat (limited to 'src/http/ngx_http_special_response.c')
-rw-r--r--src/http/ngx_http_special_response.c71
1 files changed, 41 insertions, 30 deletions
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 1b71352da..9a5dea1f8 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -1,11 +1,8 @@
#include <ngx_config.h>
#include <ngx_core.h>
-
-#include <nginx.h>
-
#include <ngx_http.h>
-#include <ngx_http_output_filter.h>
+#include <nginx.h>
static char error_tail[] =
@@ -15,6 +12,14 @@ static char error_tail[] =
;
+static char error_302_page[] =
+"<html>" CRLF
+"<head><title>302 Found</title></head>" CRLF
+"<body bgcolor=\"white\">" CRLF
+"<center><h1>302 Found</h1></center>" CRLF
+;
+
+
static char error_400_page[] =
"<html>" CRLF
"<head><title>400 Bad Request</title></head>" CRLF
@@ -63,6 +68,14 @@ static char error_414_page[] =
;
+static char error_416_page[] =
+"<html>" CRLF
+"<head><title>416 Requested Range Not Satisfiable</title></head>" CRLF
+"<body bgcolor=\"white\">" CRLF
+"<center><h1>416 Requested Range Not Satisfiable</h1></center>" CRLF
+;
+
+
static char error_500_page[] =
"<html>" CRLF
"<head><title>500 Internal Server Error</title></head>" CRLF
@@ -88,8 +101,9 @@ static char error_504_page[] =
static ngx_str_t error_pages[] = {
+ ngx_null_string, /* 300 */
ngx_null_string, /* 301 */
- ngx_null_string, /* 302 */
+ ngx_string(error_302_page),
ngx_null_string, /* 303 */
ngx_string(error_400_page),
@@ -108,7 +122,7 @@ static ngx_str_t error_pages[] = {
ngx_null_string, /* 413 */
ngx_string(error_414_page),
ngx_null_string, /* 415 */
- ngx_null_string, /* 416 */
+ ngx_string(error_416_page),
ngx_string(error_500_page),
ngx_null_string, /* 501 */
@@ -120,35 +134,22 @@ static ngx_str_t error_pages[] = {
int ngx_http_special_response_handler(ngx_http_request_t *r, int error)
{
- int err, len;
+ int err;
ngx_hunk_t *message, *tail;
- len = 0;
-
r->headers_out.status = error;
if (error < NGX_HTTP_BAD_REQUEST) {
/* 3XX */
err = error - NGX_HTTP_MOVED_PERMANENTLY;
- } else {
- ngx_test_null(r->headers_out.content_type,
- ngx_push_table(r->headers_out.headers),
- NGX_HTTP_INTERNAL_SERVER_ERROR);
-
- r->headers_out.content_type->key.len = 12;
- r->headers_out.content_type->key.data = "Content-Type";
- r->headers_out.content_type->value.len = 9;
- r->headers_out.content_type->value.data = "text/html";
-
- if (error < NGX_HTTP_INTERNAL_SERVER_ERROR) {
- /* 4XX */
- err = error - NGX_HTTP_BAD_REQUEST + 3;
+ } else if (error < NGX_HTTP_INTERNAL_SERVER_ERROR) {
+ /* 4XX */
+ err = error - NGX_HTTP_BAD_REQUEST + 4;
- } else {
- /* 5XX */
- err = error - NGX_HTTP_INTERNAL_SERVER_ERROR + 3 + 17;
- }
+ } else {
+ /* 5XX */
+ err = error - NGX_HTTP_INTERNAL_SERVER_ERROR + 4 + 17;
}
if (r->keepalive != 0) {
@@ -169,11 +170,21 @@ int ngx_http_special_response_handler(ngx_http_request_t *r, int error)
}
}
- if (error_pages[err].len == 0) {
- r->headers_out.content_length = -1;
- } else {
+ if (error_pages[err].len) {
r->headers_out.content_length = error_pages[err].len
- + len + sizeof(error_tail);
+ + sizeof(error_tail);
+
+ ngx_test_null(r->headers_out.content_type,
+ ngx_push_table(r->headers_out.headers),
+ NGX_HTTP_INTERNAL_SERVER_ERROR);
+
+ r->headers_out.content_type->key.len = 12;
+ r->headers_out.content_type->key.data = "Content-Type";
+ r->headers_out.content_type->value.len = 9;
+ r->headers_out.content_type->value.data = "text/html";
+
+ } else {
+ r->headers_out.content_length = -1;
}
if (ngx_http_send_header(r) == NGX_ERROR) {