mirror of
https://github.com/nginx/nginx.git
synced 2025-06-08 02:02:38 +08:00
Upstream: ngx_http_upstream_store() error handling fixes.
Previously, ngx_http_map_uri_to_path() errors were not checked in ngx_http_upstream_store(). Moreover, in case of errors temporary files were not deleted, as u->store was set to 0, preventing cleanup code in ngx_http_upstream_finalize_request() from removing them. With this patch, u->store is set to 0 only if there were no errors. Reported by Feng Gu.
This commit is contained in:
parent
88d9289f82
commit
248baf4262
@ -3253,7 +3253,6 @@ ngx_http_upstream_process_request(ngx_http_request_t *r)
|
|||||||
|| u->headers_in.content_length_n == tf->offset))
|
|| u->headers_in.content_length_n == tf->offset))
|
||||||
{
|
{
|
||||||
ngx_http_upstream_store(r, u);
|
ngx_http_upstream_store(r, u);
|
||||||
u->store = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3375,7 +3374,9 @@ ngx_http_upstream_store(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
|||||||
|
|
||||||
if (u->conf->store_lengths == NULL) {
|
if (u->conf->store_lengths == NULL) {
|
||||||
|
|
||||||
ngx_http_map_uri_to_path(r, &path, &root, 0);
|
if (ngx_http_map_uri_to_path(r, &path, &root, 0) == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (ngx_http_script_run(r, &path, u->conf->store_lengths->elts, 0,
|
if (ngx_http_script_run(r, &path, u->conf->store_lengths->elts, 0,
|
||||||
@ -3393,6 +3394,8 @@ ngx_http_upstream_store(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
|||||||
tf->file.name.data, path.data);
|
tf->file.name.data, path.data);
|
||||||
|
|
||||||
(void) ngx_ext_rename_file(&tf->file.name, &path, &ext);
|
(void) ngx_ext_rename_file(&tf->file.name, &path, &ext);
|
||||||
|
|
||||||
|
u->store = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user