aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2013-07-25 14:55:09 +0400
committerMaxim Dounin <mdounin@mdounin.ru>2013-07-25 14:55:09 +0400
commitbe6fbbb47eccf451369373026f9c060227dbab31 (patch)
tree746a2be5ff50e31fa73e5dbd688c8442a5d8aef8 /src
parentf52042498d17ab595ea5f372e53eb5f8690bb795 (diff)
downloadnginx-be6fbbb47eccf451369373026f9c060227dbab31.tar.gz
nginx-be6fbbb47eccf451369373026f9c060227dbab31.zip
Event pipe: fixed writing cache header to a temp file.
With previous code the p->temp_file->offset wasn't adjusted if a temp file was written by the code in ngx_event_pipe_write_to_downstream() after an EOF, resulting in cache not being used with empty scgi and uwsgi responses with Content-Length set to 0. Fix it to call ngx_event_pipe_write_chain_to_temp_file() there instead of calling ngx_write_chain_to_temp_file() directly.
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_pipe.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index 476d56e30..4dfb88f6d 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -454,7 +454,7 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
size_t bsize;
ngx_int_t rc;
ngx_uint_t flush, flushed, prev_last_shadow;
- ngx_chain_t *out, **ll, *cl, file;
+ ngx_chain_t *out, **ll, *cl;
ngx_connection_t *downstream;
downstream = p->downstream;
@@ -514,13 +514,10 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
}
if (p->cacheable && p->buf_to_file) {
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, p->log, 0,
+ "pipe write chain");
- file.buf = p->buf_to_file;
- file.next = NULL;
-
- if (ngx_write_chain_to_temp_file(p->temp_file, &file)
- == NGX_ERROR)
- {
+ if (ngx_event_pipe_write_chain_to_temp_file(p) == NGX_ABORT) {
return NGX_ABORT;
}
}