<div dir="ltr">hi<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 27, 2014 at 1:01 AM, Valentin V. Bartenev <span dir="ltr"><<a href="mailto:vbart@nginx.com" target="_blank">vbart@nginx.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">On Wednesday 26 March 2014 12:30:11 Xiaochen Wang wrote:<br>

</div><div class="">> In our production, sometimes, the disk was full. In which case, the requests<br>
> after the POST request were handled wrongly in one spdy connection.<br>
><br>
> Because the input body (DATA frame) of POST request could not be written to disk,<br>
> then ngx_http_spdy_state_read_data() tried to skip this DATA frame with wrong<br>
> sc->length, which broke spdy stream.<br>
><br>
</div>[..]<br>
<br>
While I agree that there's a problem with sc->length premature adjustment, but<br>
please note that the problem cannot be triggered by the way you described.<br>
<br>
The "pos" pointer is adjusted as well right before ngx_write_chain_to_temp_file()<br>
is called.<br></blockquote><div><br></div><div>Yes, the pos pointer is right. But sc->length is not adjusted if it receives a complete DATA frame.</div><div>Then ngx_http_spdy_state_skip() skips more data.</div><div><br>
</div><div>ngx_http_spdy_state_read_data</div><div>{</div><div>...</div><div>    if (size >= sc->length) {</div><div>        size = sc->length;                  <<< sc->length is not adjusted.</div><div>
        complete = 1;</div><div><br></div><div>    } else {</div><div>        sc->length -= size;</div><div>        complete = 0;</div><div>    }</div><div>...</div><div>}</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><div class="h5"><br>
  wbr, Valentin V. Bartenev<br>
<br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a><br>
</div></div></blockquote></div><br></div></div>