changeset 5290:355779f81491

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 25 Jul 2013 14:55:09 +0400
parents aadfadd5af2b
children 84155a389bcc
files src/event/ngx_event_pipe.c
diffstat 1 files changed, 4 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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_e
     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_e
             }
 
             if (p->cacheable && p->buf_to_file) {
-
-                file.buf = p->buf_to_file;
-                file.next = NULL;
+                ngx_log_debug0(NGX_LOG_DEBUG_EVENT, p->log, 0,
+                               "pipe write chain");
 
-                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;
                 }
             }