]> git.kaiwu.me - nginx.git/commitdiff
allowing handling 400 errors via proxy_pass
authorIgor Sysoev <igor@sysoev.ru>
Mon, 25 Sep 2006 17:49:49 +0000 (17:49 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 25 Sep 2006 17:49:49 +0000 (17:49 +0000)
src/http/ngx_http_core_module.c
src/http/ngx_http_request.c
src/http/ngx_http_special_response.c

index 8788deee58ddad18a89bc5365e318628d1f478d4..fc24d904fdde7049f07d0a12322360111bbde2c3 100644 (file)
@@ -514,12 +514,7 @@ ngx_http_handler(ngx_http_request_t *r)
         } else {
             r->lingering_close = 0;
         }
-    }
-
-    r->valid_unparsed_uri = 1;
-    r->valid_location = 1;
 
-    if (!r->internal) {
         r->phase_handler = 0;
 
     } else {
@@ -527,6 +522,12 @@ ngx_http_handler(ngx_http_request_t *r)
         r->phase_handler = cmcf->phase_engine.server_rewrite_index;
     }
 
+    if (r->unparsed_uri.len) {
+        r->valid_unparsed_uri = 1;
+    }
+
+    r->valid_location = 1;
+
     r->write_event_handler = ngx_http_core_run_phases;
     ngx_http_core_run_phases(r);
 }
index 73eeeb07f0cd9f940824c63e087dc1806520ae0c..5ce2e2ae74a94920f8064917c34e5ee8aea4c56f 100644 (file)
@@ -979,7 +979,7 @@ ngx_http_read_request_header(ngx_http_request_t *r)
         c->error = rev->error;
         c->log->action = "sending response to client";
 
-        ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
+        ngx_http_finalize_request(r, NGX_HTTP_CLIENT_CLOSED_REQUEST);
         return NGX_ERROR;
     }
 
index 6658ed07c7fa15214d7c5d579a391b518eaf8759..8ddfce9c197cefec368d615f9cbeb394b3137e1e 100644 (file)
@@ -299,6 +299,9 @@ static ngx_str_t error_pages[] = {
 };
 
 
+static ngx_str_t  ngx_http_get_name = { 3, "GET " };
+
+
 ngx_int_t
 ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
 {
@@ -364,6 +367,7 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
                 r->err_status = err_page[i].overwrite;
 
                 r->method = NGX_HTTP_GET;
+                r->method_name = ngx_http_get_name;
 
                 uri = &err_page[i].uri;