diff src/http/ngx_http_write_filter_module.c @ 597:9262f520ce21 release-0.3.20

nginx-0.3.20-RELEASE import *) Bugfix: in SSI handling. *) Bugfix: the ngx_http_memcached_module did not support the keys in the "/usr?args" form.
author Igor Sysoev <igor@sysoev.ru>
date Wed, 11 Jan 2006 15:26:57 +0000
parents 4e296b7d25bf
children f971949ffb58
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter_module.c
+++ b/src/http/ngx_http_write_filter_module.c
@@ -179,20 +179,24 @@ ngx_http_write_filter(ngx_http_request_t
     }
 
     if (c->write->delayed) {
+        c->buffered |= NGX_HTTP_WRITE_BUFFERED;
         return NGX_AGAIN;
     }
 
-    if (size == 0 && !c->buffered) {
+    if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED)) {
         if (last) {
             r->out = NULL;
+            c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
+
             return NGX_OK;
         }
 
         if (flush) {
             do {
                 r->out = r->out->next;
-            }
-            while (r->out);
+            } while (r->out);
+
+            c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
 
             return NGX_OK;
         }
@@ -232,7 +236,14 @@ ngx_http_write_filter(ngx_http_request_t
 
     r->out = chain;
 
-    if (chain || (c->buffered && r->postponed == NULL)) {
+    if (chain) {
+        c->buffered |= NGX_HTTP_WRITE_BUFFERED;
+        return NGX_AGAIN;
+    }
+
+    c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
+
+    if ((c->buffered & NGX_LOWLEVEL_BUFFERED) && r->postponed == NULL) {
         return NGX_AGAIN;
     }