fix FastCGI "zero size buf" alert,
r841 did not fix it
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index 0239bd1..0809f9b 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -420,7 +420,7 @@
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 @@
out = NULL;
ll = NULL;
flush = 0;
+ prev_last_shadow = 1;
for ( ;; ) {
if (p->out) {
@@ -520,10 +521,16 @@
&& 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 @@
&& 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 {