diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c index 0809f9bae..a22cdcc0c 100644 --- a/src/event/ngx_event_pipe.c +++ b/src/event/ngx_event_pipe.c @@ -518,19 +518,12 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p) cl = p->out; if (cl->buf->recycled - && 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); @@ -550,6 +543,15 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p) { if (!prev_last_shadow) { p->in = p->in->next; + + cl->next = NULL; + + if (out) { + *ll = cl; + } else { + out = cl; + } + ll = &cl->next; } flush = 1;