]> git.kaiwu.me - nginx.git/commitdiff
Proxy: fixed proxy_set_body with proxy_cache.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 23 Mar 2015 16:28:54 +0000 (19:28 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 23 Mar 2015 16:28:54 +0000 (19:28 +0300)
If the last header evaluation resulted in an empty header, the e.skip flag
was set and was not reset when we've switched to evaluation of body_values.
This incorrectly resulted in body values being skipped instead of producing
some correct body as set by proxy_set_body.  Fix is to properly reset
the e.skip flag.

As the problem only appeared if the last potentially non-empty header
happened to be empty, it only manifested itself if proxy_set_body was used
with proxy_cache.

src/http/modules/ngx_http_proxy_module.c

index 2409c7ec44f0cce189eaaa5e571f574b4050c777..ac81b07af3411296942a1e3f2ca6a0ba9a09dbea 100644 (file)
@@ -1379,6 +1379,7 @@ ngx_http_proxy_create_request(ngx_http_request_t *r)
     if (plcf->body_values) {
         e.ip = plcf->body_values->elts;
         e.pos = b->last;
+        e.skip = 0;
 
         while (*(uintptr_t *) e.ip) {
             code = *(ngx_http_script_code_pt *) e.ip;