[nginx] Proxy: fixed proxy_set_body with proxy_cache.

Maxim Dounin mdounin at mdounin.ru
Mon Mar 23 18:10:47 UTC 2015

details:   http://hg.nginx.org/nginx/rev/613b14b305c7
changeset: 6043:613b14b305c7
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Mon Mar 23 19:28:54 2015 +0300
Proxy: fixed proxy_set_body with proxy_cache.

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 |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (11 lines):

diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1379,6 +1379,7 @@ ngx_http_proxy_create_request(ngx_http_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;

More information about the nginx-devel mailing list