nginx-0.0.1-2003-12-15-16:57:13 import
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 6d20fdf..6d5bc0d 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -346,17 +346,17 @@
                 continue;
             }
 
-            if (rc == NGX_AGAIN) {
-                return;
-            }
-
             if (rc >= NGX_HTTP_SPECIAL_RESPONSE || rc == NGX_ERROR) {
                 ngx_http_finalize_request(r, rc);
                 return;
             }
 
-            if (rc == NGX_OK && r->phase == NGX_HTTP_CONTENT_PHASE) {
-                ngx_http_finalize_request(r, 0);
+            if (r->phase == NGX_HTTP_CONTENT_PHASE) {
+                ngx_http_finalize_request(r, rc);
+                return;
+            }
+
+            if (rc == NGX_AGAIN) {
                 return;
             }
 
diff --git a/src/http/ngx_http_write_filter.c b/src/http/ngx_http_write_filter.c
index 50f7f93..271ed17 100644
--- a/src/http/ngx_http_write_filter.c
+++ b/src/http/ngx_http_write_filter.c
@@ -24,7 +24,7 @@
 static ngx_command_t  ngx_http_write_filter_commands[] = {
 
     { ngx_string("buffer_output"),
-      NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
       ngx_conf_set_size_slot,
       NGX_HTTP_LOC_CONF_OFFSET,
       offsetof(ngx_http_write_filter_conf_t, buffer_output),