]> git.kaiwu.me - nginx.git/commitdiff
Fixed possible request hang with filter finalization.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 14 May 2012 09:48:05 +0000 (09:48 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 14 May 2012 09:48:05 +0000 (09:48 +0000)
With r->filter_finalize set the ngx_http_finalize_connection() wasn't
called from ngx_http_finalize_request() called with NGX_OK, resulting in
r->main->count not being decremented, thus causing request hang in some
rare situations.

See here for more details:
http://mailman.nginx.org/pipermail/nginx-devel/2012-May/002190.html

Patch by Yichun Zhang (agentzh).

src/http/ngx_http_request.c

index 59d4d4ae610a28d317d2d7d935c2db5879f8bd3b..fa58dd99b70ba6d73248069cb35936c898ce7aab 100644 (file)
@@ -1933,6 +1933,7 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
 
     if (rc == NGX_OK && r->filter_finalize) {
         c->error = 1;
+        ngx_http_finalize_connection(r);
         return;
     }