Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-07-28 20:16:50 +0400
committerIgor Sysoev <igor@sysoev.ru>2004-07-28 20:16:50 +0400
commit5ec68f6453a0ed164a8fd73e024edb75344e967d (patch)
treeac4574649ce9fe5beb4fc9946fb4a56fffaacc99 /src
parent71cb18335671b5e6d46ee1eb6b2f6bb67598f6c5 (diff)
nginx-0.0.9-2004-07-28-20:16:50 import
Diffstat (limited to 'src')
-rw-r--r--src/core/ngx_output_chain.c9
-rw-r--r--src/event/modules/ngx_rtsig_module.c20
-rw-r--r--src/http/ngx_http_write_filter.c10
-rw-r--r--src/os/unix/ngx_freebsd_sendfile_chain.c1
-rw-r--r--src/os/unix/ngx_linux_sendfile_chain.c1
5 files changed, 24 insertions, 17 deletions
diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
index 02d780f37..549c9ad16 100644
--- 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_chain_ctx_t *ctx, ngx_chain_t *in)
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_chain_ctx_t *ctx, ngx_chain_t *in)
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 3be8e6a8f..6a83e9c1b 100644
--- 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_overflow(ngx_cycle_t *cycle)
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_overflow(ngx_cycle_t *cycle)
}
}
- 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_overflow(ngx_cycle_t *cycle)
}
/*
- * 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_overflow(ngx_cycle_t *cycle)
/*
* 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 2c0989d0a..c6cc6519a 100644
--- 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_module = {
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_request_t *r, ngx_chain_t *in)
*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 f79b79bc2..5227a21bd 100644
--- 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(ngx_connection_t *c, ngx_chain_t *in,
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 690631f31..48c09dffa 100644
--- 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(ngx_connection_t *c, ngx_chain_t *in,
if (header.nelts == 0 && cl && cl->buf->in_file && send < limit) {
file = cl->buf;
- fsize = 0;
/* coalesce the neighbouring file bufs */