mirror of
https://github.com/nginx/nginx.git
synced 2024-11-24 04:49:01 +08:00
Removed incorrect optimization of HEAD requests.
The stub status module and ngx_http_send_response() (used by the empty gif module and the "return" directive) incorrectly assumed that responding to HEAD requests always results in r->header_only being set. This is not true, and results in incorrect behaviour, for example, in the following configuration: location / { image_filter size; return 200 test; } Fix is to remove this incorrect micro-optimization from both stub status module and ngx_http_send_response(). Reported by Chris Newton.
This commit is contained in:
parent
e1ca985122
commit
d2c0b9a6c7
@ -103,16 +103,6 @@ ngx_http_stub_status_handler(ngx_http_request_t *r)
|
||||
ngx_str_set(&r->headers_out.content_type, "text/plain");
|
||||
r->headers_out.content_type_lowcase = NULL;
|
||||
|
||||
if (r->method == NGX_HTTP_HEAD) {
|
||||
r->headers_out.status = NGX_HTTP_OK;
|
||||
|
||||
rc = ngx_http_send_header(r);
|
||||
|
||||
if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
size = sizeof("Active connections: \n") + NGX_ATOMIC_T_LEN
|
||||
+ sizeof("server accepts handled requests\n") - 1
|
||||
+ 6 + 3 * NGX_ATOMIC_T_LEN
|
||||
|
@ -1782,7 +1782,7 @@ ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
|
||||
}
|
||||
}
|
||||
|
||||
if (r->method == NGX_HTTP_HEAD || (r != r->main && val.len == 0)) {
|
||||
if (r != r->main && val.len == 0) {
|
||||
return ngx_http_send_header(r);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user