aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_pipe.c16
1 files changed, 9 insertions, 7 deletions
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;