diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
index 02d780f..549c9ad 100644
--- a/src/core/ngx_output_chain.c
+++ b/src/core/ngx_output_chain.c
@@ -73,6 +73,13 @@
                 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 */
@@ -91,8 +98,6 @@
 
                     if (ctx->in->buf->last_buf) {
 
-                        bsize = ngx_buf_size(ctx->in->buf);
-
                         if (bsize < ctx->bufs.size) {
 
                            /*
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 3be8e6a..6a83e9c 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -626,20 +626,20 @@
                               cycle->log, 0,
                               "poll() failed while the overflow recover");
 
-                if (err != NGX_EINTR) {
-                    break;
+                if (err == NGX_EINTR) {
+                    continue;
                 }
             }
+
+            break;
         }
 
         if (ready <= 0) {
             continue;
         }
 
-        if (n) {
-            if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
-                return NGX_ERROR;
-            }
+        if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
+            return NGX_ERROR;
         }
 
         for (i = 0; i < n; i++) {
@@ -686,9 +686,7 @@
             }
         }
 
-        if (n) {
-            ngx_mutex_unlock(ngx_posted_events_mutex);
-        }
+        ngx_mutex_unlock(ngx_posted_events_mutex);
 
         if (tested >= rtscf->overflow_test) {
 
@@ -723,7 +721,7 @@
                 }
 
                 /*
-                 * drain rt signal queue if the /proc/sys/kernel/rtsig-nr
+                 * drain the rt signal queue if the /proc/sys/kernel/rtsig-nr
                  * is bigger than
                  *    /proc/sys/kernel/rtsig-max / rtsig_overflow_threshold
                  */
@@ -741,7 +739,7 @@
 
                 /*
                  * Linux has not KERN_RTSIGMAX since 2.6.6-mm2
-                 * so drain rt signal queue unconditionally
+                 * so drain the rt signal queue unconditionally
                  */
 
                 while (ngx_rtsig_process_events(cycle) == NGX_OK) { /* void */ }
diff --git a/src/http/ngx_http_write_filter.c b/src/http/ngx_http_write_filter.c
index 2c0989d..c6cc651 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;
+    off_t                         size, flush, sent, bsize;
     ngx_chain_t                  *cl, *ln, **ll, *chain;
     ngx_connection_t             *c;
     ngx_http_core_loc_conf_t     *clcf;
@@ -82,7 +82,13 @@
         *ll = cl;
         ll = &cl->next;
 
-        size += ngx_buf_size(cl->buf);
+        bsize = ngx_buf_size(cl->buf);
+
+        if (bsize == 0 && cl->buf->in_file) {
+            cl->buf->in_file = 0;
+        }
+
+        size += bsize;
 
         if (cl->buf->flush || cl->buf->recycled) {
             flush = size;
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index f79b79b..5227a21 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -120,7 +120,6 @@
 
         if (cl && cl->buf->in_file && send < limit) {
             file = cl->buf;
-            fsize = 0;
 
             /* coalesce the neighbouring file bufs */
 
diff --git a/src/os/unix/ngx_linux_sendfile_chain.c b/src/os/unix/ngx_linux_sendfile_chain.c
index 690631f..48c09df 100644
--- a/src/os/unix/ngx_linux_sendfile_chain.c
+++ b/src/os/unix/ngx_linux_sendfile_chain.c
@@ -127,7 +127,6 @@
 
         if (header.nelts == 0 && cl && cl->buf->in_file && send < limit) {
             file = cl->buf;
-            fsize = 0;
 
             /* coalesce the neighbouring file bufs */
 
