changeset 3181:36f6407817dc

clear r->lingering_close to disable preventively calling ngx_http_set_lingering_close() while request cleanup
author Igor Sysoev <igor@sysoev.ru>
date Fri, 02 Oct 2009 11:32:56 +0000
parents 0e420f3f8e18
children 6ddaac3e0bf7
files src/http/ngx_http_request_body.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -475,7 +475,10 @@ ngx_http_discard_request_body(ngx_http_r
         return NGX_HTTP_INTERNAL_SERVER_ERROR;
     }
 
-    if (ngx_http_read_discarded_request_body(r) != NGX_OK) {
+    if (ngx_http_read_discarded_request_body(r) == NGX_OK) {
+        r->lingering_close = 0;
+
+    } else {
         r->count++;
         r->discard_body = 1;
     }
@@ -508,6 +511,7 @@ ngx_http_read_discarded_request_body_han
 
         if (timer <= 0) {
             r->discard_body = 0;
+            r->lingering_close = 0;
             ngx_http_finalize_request(r, 0);
             return;
         }
@@ -521,6 +525,7 @@ ngx_http_read_discarded_request_body_han
     if (rc == NGX_OK) {
 
         r->discard_body = 0;
+        r->lingering_close = 0;
 
         if (r->done) {
             ngx_http_finalize_request(r, 0);