diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2015-03-23 19:28:54 +0300 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2015-03-23 19:28:54 +0300 |
| commit | 58eb93f791d27482519161a9bdef00acd9b33298 (patch) | |
| tree | 9ab78f6853196fa4620796a9f528e4f88a51df08 /src | |
| parent | e87a565aab4da7ade1f016c2bab4371a70998974 (diff) | |
| download | nginx-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.c | 1 |
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; |
