diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2008-11-20 17:07:22 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2008-11-20 17:07:22 +0000 |
| commit | fc50a8759a11c2e7a2a36793968b2b783a841117 (patch) | |
| tree | 4ff6f54587061bcf06691fe27d448858adf13a38 | |
| parent | 7405d30f4f544aee24c074ef3747ab64763f6d6e (diff) | |
| download | nginx-fc50a8759a11c2e7a2a36793968b2b783a841117.tar.gz nginx-fc50a8759a11c2e7a2a36793968b2b783a841117.tar.bz2 | |
r2183, r2192 merge:
*) allow file existence test for POST requests in static module
*) do not discard body while error_page redirection
| -rw-r--r-- | src/http/modules/ngx_http_static_module.c | 18 | ||||
| -rw-r--r-- | src/http/ngx_http_special_response.c | 11 |
2 files changed, 15 insertions, 14 deletions
diff --git a/src/http/modules/ngx_http_static_module.c b/src/http/modules/ngx_http_static_module.c index c4e688ffb..b8ad57336 100644 --- a/src/http/modules/ngx_http_static_module.c +++ b/src/http/modules/ngx_http_static_module.c @@ -58,7 +58,7 @@ ngx_http_static_handler(ngx_http_request_t *r) ngx_open_file_info_t of; ngx_http_core_loc_conf_t *clcf; - if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) { + if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD|NGX_HTTP_POST))) { return NGX_HTTP_NOT_ALLOWED; } @@ -71,12 +71,6 @@ ngx_http_static_handler(ngx_http_request_t *r) return NGX_DECLINED; } - rc = ngx_http_discard_request_body(r); - - if (rc != NGX_OK) { - return rc; - } - log = r->connection->log; /* @@ -186,6 +180,16 @@ ngx_http_static_handler(ngx_http_request_t *r) #endif + if (r->method & NGX_HTTP_POST) { + return NGX_HTTP_NOT_ALLOWED; + } + + rc = ngx_http_discard_request_body(r); + + if (rc != NGX_OK) { + return rc; + } + log->action = "sending response to client"; r->headers_out.status = NGX_HTTP_OK; diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c index 11c41d55b..3ef5c7cda 100644 --- a/src/http/ngx_http_special_response.c +++ b/src/http/ngx_http_special_response.c @@ -327,7 +327,6 @@ static ngx_str_t ngx_http_get_name = { 3, (u_char *) "GET " }; ngx_int_t ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error) { - ngx_int_t rc; ngx_uint_t i, err; ngx_http_err_page_t *err_page; ngx_http_core_loc_conf_t *clcf; @@ -335,12 +334,6 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error) ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http special response: %d, \"%V\"", error, &r->uri); - rc = ngx_http_discard_request_body(r); - - if (rc == NGX_HTTP_INTERNAL_SERVER_ERROR) { - error = NGX_HTTP_INTERNAL_SERVER_ERROR; - } - r->err_status = error; if (r->keepalive != 0) { @@ -385,6 +378,10 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error) } } + if (ngx_http_discard_request_body(r) != NGX_OK) { + error = NGX_HTTP_INTERNAL_SERVER_ERROR; + } + if (clcf->msie_refresh && r->headers_in.msie && (error == NGX_HTTP_MOVED_PERMANENTLY |
