diff src/http/ngx_http_core_module.c @ 178:a8ff48d26cca

nginx-0.0.1-2003-11-11-00:09:22 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 10 Nov 2003 21:09:22 +0000
parents 4db54fdbcbe7
children 9f3a78b06c48
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -429,6 +429,11 @@ int ngx_http_send_header(ngx_http_reques
         return NGX_OK;
     }
 
+    if (r->err_status) {
+        r->headers_out.status = r->err_status;
+        r->headers_out.status_line.len = 0;
+    }
+
     return (*ngx_http_top_header_filter)(r);
 }
 
@@ -495,7 +500,18 @@ int ngx_http_internal_redirect(ngx_http_
     }
 
     /* clear the modules contexts */
-    ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
+
+    if (r->error_page) {
+        r->err_status = r->headers_out.status;
+        r->err_ctx = r->ctx;
+        r->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);
+        if (r->ctx == NULL) {
+            return NGX_HTTP_INTERNAL_SERVER_ERROR;
+        }
+
+    } else {
+        ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
+    }
 
     r->phase = 0;
     r->phase_handler = 0;