diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
index 549c9ad..db4321b 100644
--- a/src/core/ngx_output_chain.c
+++ b/src/core/ngx_output_chain.c
@@ -59,6 +59,17 @@
              * or there are the free output bufs to copy in
              */
 
+            bsize = ngx_buf_size(ctx->in->buf);
+
+            if (bsize == 0 && !ngx_buf_special(ctx->in->buf)) {
+
+                ngx_log_error(NGX_LOG_ALERT, ctx->pool->log, 0,
+                              "zero size buf");
+
+                ctx->in = ctx->in->next;
+                continue;
+            }
+
             if (!ngx_output_chain_need_to_copy(ctx, ctx->in->buf)) {
 
                 /* move the chain link to the output chain */
@@ -73,13 +84,6 @@
                 continue;
             }
 
-            bsize = ngx_buf_size(ctx->in->buf);
-
-            if (bsize == 0) {
-                ctx->in = ctx->in->next;
-                continue;
-            }
-
             if (ctx->buf == NULL) {
 
                 /* get the free buf */
diff --git a/src/http/modules/ngx_http_static_handler.c b/src/http/modules/ngx_http_static_handler.c
index 9a1a814..cf942ad 100644
--- a/src/http/modules/ngx_http_static_handler.c
+++ b/src/http/modules/ngx_http_static_handler.c
@@ -483,22 +483,32 @@
     r->headers_out.content_length_n = ngx_file_size(&fi);
     r->headers_out.last_modified_time = ngx_file_mtime(&fi);
 
+    if (r->headers_out.content_length_n == 0) {
+        r->header_only = 1;
+    }
+
     if (ngx_http_set_content_type(r) != NGX_OK) {
         return NGX_HTTP_INTERNAL_SERVER_ERROR;
     }
 
+#if (NGX_SUPPRESS_WARN)
+    b = NULL;
+#endif
 
-    /* we need to allocate all before the header would be sent */
+    if (!r->header_only) {
+        /* we need to allocate all before the header would be sent */
 
-    if (!(b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t)))) {
-        return NGX_HTTP_INTERNAL_SERVER_ERROR;
+        if (!(b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t)))) {
+            return NGX_HTTP_INTERNAL_SERVER_ERROR;
+        }
+
+        if (!(b->file = ngx_pcalloc(r->pool, sizeof(ngx_file_t)))) {
+            return NGX_HTTP_INTERNAL_SERVER_ERROR;
+        }
+
+        r->filter_allow_ranges = 1;
     }
 
-    if (!(b->file = ngx_pcalloc(r->pool, sizeof(ngx_file_t)))) {
-        return NGX_HTTP_INTERNAL_SERVER_ERROR;
-    }
-
-    r->filter_allow_ranges = 1;
     rc = ngx_http_send_header(r);
 
     if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
diff --git a/src/http/ngx_http_write_filter.c b/src/http/ngx_http_write_filter.c
index c6cc651..2c0989d 100644
--- a/src/http/ngx_http_write_filter.c
+++ b/src/http/ngx_http_write_filter.c
@@ -40,7 +40,7 @@
 ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
 {
     int                           last;
-    off_t                         size, flush, sent, bsize;
+    off_t                         size, flush, sent;
     ngx_chain_t                  *cl, *ln, **ll, *chain;
     ngx_connection_t             *c;
     ngx_http_core_loc_conf_t     *clcf;
@@ -82,13 +82,7 @@
         *ll = cl;
         ll = &cl->next;
 
-        bsize = ngx_buf_size(cl->buf);
-
-        if (bsize == 0 && cl->buf->in_file) {
-            cl->buf->in_file = 0;
-        }
-
-        size += bsize;
+        size += ngx_buf_size(cl->buf);
 
         if (cl->buf->flush || cl->buf->recycled) {
             flush = size;
