summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2015-03-23 19:28:54 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2015-03-23 19:28:54 +0300
commit58eb93f791d27482519161a9bdef00acd9b33298 (patch)
tree9ab78f6853196fa4620796a9f528e4f88a51df08 /src
parente87a565aab4da7ade1f016c2bab4371a70998974 (diff)
downloadnginx-58eb93f791d27482519161a9bdef00acd9b33298.tar.gz
nginx-58eb93f791d27482519161a9bdef00acd9b33298.tar.bz2
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.
Diffstat (limited to 'src')
-rw-r--r--src/http/modules/ngx_http_proxy_module.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
index 2409c7ec4..ac81b07af 100644
--- 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_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;