fix FastCGI "zero size buf" alert,

r841 did not fix it
This commit is contained in:
Igor Sysoev 2007-01-17 16:10:40 +00:00
parent ecef14e307
commit aafa2004d7

View File

@ -420,7 +420,7 @@ static ngx_int_t
ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p) ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
{ {
size_t bsize; size_t bsize;
ngx_uint_t flush; ngx_uint_t flush, prev_last_shadow;
ngx_chain_t *out, **ll, *cl; ngx_chain_t *out, **ll, *cl;
ngx_connection_t *downstream; ngx_connection_t *downstream;
@ -511,6 +511,7 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
out = NULL; out = NULL;
ll = NULL; ll = NULL;
flush = 0; flush = 0;
prev_last_shadow = 1;
for ( ;; ) { for ( ;; ) {
if (p->out) { if (p->out) {
@ -520,10 +521,16 @@ ngx_event_pipe_write_to_downstream(ngx_event_pipe_t *p)
&& cl->buf->last_shadow && cl->buf->last_shadow
&& bsize + cl->buf->last - cl->buf->pos > p->busy_size) && bsize + cl->buf->last - cl->buf->pos > p->busy_size)
{ {
if (!prev_last_shadow) {
p->in = p->in->next;
}
flush = 1; flush = 1;
break; break;
} }
prev_last_shadow = cl->buf->last_shadow;
p->out = p->out->next; p->out = p->out->next;
ngx_event_pipe_free_shadow_raw_buf(&p->free_raw_bufs, cl->buf); 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 && cl->buf->last_shadow
&& bsize + cl->buf->last - cl->buf->pos > p->busy_size) && bsize + cl->buf->last - cl->buf->pos > p->busy_size)
{ {
if (!prev_last_shadow) {
p->in = p->in->next;
}
flush = 1; flush = 1;
break; break;
} }
prev_last_shadow = cl->buf->last_shadow;
p->in = p->in->next; p->in = p->in->next;
} else { } else {