changeset 402:f209f3391020

nginx-0.0.9-2004-07-28-20:16:50 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 28 Jul 2004 16:16:50 +0000
parents b32ca005e025
children ea3113b181d1
files src/core/ngx_output_chain.c src/event/modules/ngx_rtsig_module.c src/http/ngx_http_write_filter.c src/os/unix/ngx_freebsd_sendfile_chain.c src/os/unix/ngx_linux_sendfile_chain.c
diffstat 5 files changed, 24 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/ngx_output_chain.c
+++ b/src/core/ngx_output_chain.c
@@ -73,6 +73,13 @@ ngx_int_t ngx_output_chain(ngx_output_ch
                 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 @@ ngx_int_t ngx_output_chain(ngx_output_ch
 
                     if (ctx->in->buf->last_buf) {
 
-                        bsize = ngx_buf_size(ctx->in->buf);
-
                         if (bsize < ctx->bufs.size) {
 
                            /*
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -626,20 +626,20 @@ static ngx_int_t ngx_rtsig_process_overf
                               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 @@ static ngx_int_t ngx_rtsig_process_overf
             }
         }
 
-        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 @@ static ngx_int_t ngx_rtsig_process_overf
                 }
 
                 /*
-                 * 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 @@ static ngx_int_t ngx_rtsig_process_overf
 
                 /*
                  * 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 */ }
--- a/src/http/ngx_http_write_filter.c
+++ b/src/http/ngx_http_write_filter.c
@@ -40,7 +40,7 @@ ngx_module_t  ngx_http_write_filter_modu
 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 @@ ngx_int_t ngx_http_write_filter(ngx_http
         *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;
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -120,7 +120,6 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
         if (cl && cl->buf->in_file && send < limit) {
             file = cl->buf;
-            fsize = 0;
 
             /* coalesce the neighbouring file bufs */
 
--- a/src/os/unix/ngx_linux_sendfile_chain.c
+++ b/src/os/unix/ngx_linux_sendfile_chain.c
@@ -127,7 +127,6 @@ ngx_chain_t *ngx_linux_sendfile_chain(ng
 
         if (header.nelts == 0 && cl && cl->buf->in_file && send < limit) {
             file = cl->buf;
-            fsize = 0;
 
             /* coalesce the neighbouring file bufs */