]> git.kaiwu.me - nginx.git/commitdiff
fix discarding body
authorIgor Sysoev <igor@sysoev.ru>
Fri, 25 Sep 2009 11:55:33 +0000 (11:55 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Fri, 25 Sep 2009 11:55:33 +0000 (11:55 +0000)
src/http/ngx_http_request_body.c

index d293147470c5f04aff315f0285a50abe57943278..dc593f10b308b8b3c228b16660ece7805f3c23da 100644 (file)
@@ -562,12 +562,16 @@ ngx_http_read_discarded_request_body(ngx_http_request_t *r)
     ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                    "http read discarded body");
 
-    do {
+    for ( ;; ) {
         if (r->headers_in.content_length_n == 0) {
             r->read_event_handler = ngx_http_block_reading;
             return NGX_OK;
         }
 
+        if (!r->connection->read->ready) {
+            return NGX_AGAIN;
+        }
+
         size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
                    NGX_HTTP_DISCARD_BUFFER_SIZE:
                    (size_t) r->headers_in.content_length_n;
@@ -588,10 +592,7 @@ ngx_http_read_discarded_request_body(ngx_http_request_t *r)
         }
 
         r->headers_in.content_length_n -= n;
-
-    } while (r->connection->read->ready);
-
-    return NGX_AGAIN;
+    }
 }