]> git.kaiwu.me - nginx.git/commitdiff
fix FastCGI "zero size buf" alert,
authorIgor Sysoev <igor@sysoev.ru>
Wed, 17 Jan 2007 16:10:40 +0000 (16:10 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 17 Jan 2007 16:10:40 +0000 (16:10 +0000)
r841 did not fix it

src/event/ngx_event_pipe.c

index 0239bd105b801fd2ed6d6fde443d5706850da2e8..0809f9bae154e7b6cb2b983fbc89c3e2467b0bd7 100644 (file)
@@ -420,7 +420,7 @@ static ngx_int_t
 ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
 {
     size_t             bsize;
-    ngx_uint_t         flush;
+    ngx_uint_t         flush, prev_last_shadow;
     ngx_chain_t       *out, **ll, *cl;
     ngx_connection_t  *downstream;
 
@@ -511,6 +511,7 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
         out = NULL;
         ll = NULL;
         flush = 0;
+        prev_last_shadow = 1;
 
         for ( ;; ) {
             if (p->out) {
@@ -520,10 +521,16 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
                     && cl->buf->last_shadow
                     && bsize + cl->buf->last - cl->buf->pos > p->busy_size)
                 {
+                    if (!prev_last_shadow) {
+                        p->in = p->in->next;
+                    }
+
                     flush = 1;
                     break;
                 }
 
+                prev_last_shadow = cl->buf->last_shadow;
+
                 p->out = p->out->next;
 
                 ngx_event_pipe_free_shadow_raw_buf(&p->free_raw_bufs, cl->buf);
@@ -541,10 +548,16 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
                     && cl->buf->last_shadow
                     && bsize + cl->buf->last - cl->buf->pos > p->busy_size)
                 {
+                    if (!prev_last_shadow) {
+                        p->in = p->in->next;
+                    }
+
                     flush = 1;
                     break;
                 }
 
+                prev_last_shadow = cl->buf->last_shadow;
+
                 p->in = p->in->next;
 
             } else {