diff src/http/ngx_http_special_response.c @ 99:a059e1aa65d4

nginx-0.0.1-2003-06-02-19:24:30 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 02 Jun 2003 15:24:30 +0000
parents c9b243802a17
children 6dfda4cf5200
line wrap: on
line diff
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -1,12 +1,9 @@
 
 #include <ngx_config.h>
 #include <ngx_core.h>
-
+#include <ngx_http.h>
 #include <nginx.h>
 
-#include <ngx_http.h>
-#include <ngx_http_output_filter.h>
-
 
 static char error_tail[] =
 "<hr><center>" NGINX_VER "</center>" CRLF
@@ -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);
+    } else if (error < NGX_HTTP_INTERNAL_SERVER_ERROR) {
+        /* 4XX */
+        err = error - NGX_HTTP_BAD_REQUEST + 4;
 
-        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 {
-            /* 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(ng
         }
     }
 
-    if (error_pages[err].len == 0) {
-        r->headers_out.content_length = -1;
+    if (error_pages[err].len) {
+        r->headers_out.content_length = error_pages[err].len
+                                        + 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 = error_pages[err].len
-                                        + len + sizeof(error_tail);
+        r->headers_out.content_length = -1;
     }
 
     if (ngx_http_send_header(r) == NGX_ERROR) {