]> git.kaiwu.me - nginx.git/commit
Merge of r5027, r5028, r5029: fastcgi_keep_conn fixes.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 11 Feb 2013 16:11:14 +0000 (16:11 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 11 Feb 2013 16:11:14 +0000 (16:11 +0000)
commit7eafb7761e3220b4e882e6c474fc7bebd3190dc7
tree9d673c60d210ecd95d1b3d34bbbc321e54188602
parent61312182f5b08cafc33bd4ebe15d3c2defb4a998
Merge of r5027, r5028, r5029: fastcgi_keep_conn fixes.

*) FastCGI: fixed wrong connection close with fastcgi_keep_conn.

   With fastcgi_keep_conn it was possible that connection was closed after
   FCGI_STDERR record with zero padding and without any further data read
   yet.  This happended as f->state was set to ngx_http_fastcgi_st_padding
   and then "break" happened, resulting in p->length being set to
   f->padding, i.e. 0 (which in turn resulted in connection close).

   Fix is to make sure we continue the loop after f->state is set.

*) FastCGI: unconditional state transitions.  Checks for f->padding
   before state transitions make code hard to follow, remove them and
   make sure we always do another loop iteration after f->state is
   set to ngx_http_fastcgi_st_padding.

*) FastCGI: proper handling of split fastcgi end request.  If fastcgi
   end request record was split between several network packets, with
   fastcgi_keep_conn it was possible that connection was saved in
   incorrect state (e.g. with padding bytes not yet read).
src/http/modules/ngx_http_fastcgi_module.c