Mercurial > hg > nginx
changeset 5770:9de5820bb3e0
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.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 18 Jul 2014 20:11:40 +0400 |
parents | e0aa54a4357e |
children | c3b08217f2a2 |
files | src/http/ngx_http_upstream.c |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream.c Fri Jul 18 20:02:11 2014 +0400 +++ b/src/http/ngx_http_upstream.c Fri Jul 18 20:11:40 2014 +0400 @@ -3253,7 +3253,6 @@ || u->headers_in.content_length_n == tf->offset)) { ngx_http_upstream_store(r, u); - u->store = 0; } } } @@ -3375,7 +3374,9 @@ 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 { if (ngx_http_script_run(r, &path, u->conf->store_lengths->elts, 0, @@ -3393,6 +3394,8 @@ tf->file.name.data, path.data); (void) ngx_ext_rename_file(&tf->file.name, &path, &ext); + + u->store = 0; }