On Wednesday 26 March 2014 15:46:05 Xiaochen Wang wrote: > hi, > > On Wed, Mar 26, 2014 at 3:02 PM, Valentin V. Bartenev <vb...@nginx.com>wrote: > > > On Wednesday 26 March 2014 12:30:11 Xiaochen Wang wrote: > > > In our production, sometimes, the disk was full. In which case, the > > > requests after the POST request were handled wrongly in one spdy > > > connection. > > > > > > Because the input body (DATA frame) of POST request could not be written > > > to disk, then ngx_http_spdy_state_read_data() tried to skip this DATA > > > frame with wrong sc->length, which broke spdy stream. > > > > > > > > > # HG changeset patch > > > # User Xiaochen Wang <wangxiaoch...@gmail.com> > > > # Date 1395807655 -28800 > > > # Node ID c18a0115c6027ad0ad475061d2984d90544d8449 > > > # Parent bd91f286ee0ade98e9c0f8f55bfef54a122adaf2 > > > SPDY: fixed handling of sc->length in ngx_http_spdy_state_read_data() > > > > > > diff -r bd91f286ee0a -r c18a0115c602 src/http/ngx_http_spdy.c > > > --- a/src/http/ngx_http_spdy.c Mon Mar 24 16:35:44 2014 -0700 > > > +++ b/src/http/ngx_http_spdy.c Wed Mar 26 12:20:55 2014 +0800 > > > @@ -1519,7 +1519,6 @@ > > > complete = 1; > > > > > > } else { > > > - sc->length -= size; > > > complete = 0; > > > } > > > > > > @@ -1567,6 +1566,7 @@ > > > buf->pos = pos; > > > > > > pos += size; > > > + sc->length -= size; > > > > > > buf->end = pos; > > > buf->last = pos; > > > @@ -1585,6 +1585,7 @@ > > > } else { > > > buf->last = ngx_cpymem(buf->last, pos, size); > > > pos += size; > > > + sc->length -= size; > > > } > > > > > > r->request_length += size; > > > > > > > Thank you for the report. I'd prefer a slightly smaller patch: > > > Agree.
It has been committed: http://hg.nginx.org/nginx/rev/d74889fbf06d Thanks. wbr, Valentin V. Bartenev _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel