nginx-0.0.9-2004-07-28-20:16:50 import

This commit is contained in:
Igor Sysoev 2004-07-28 16:16:50 +00:00
parent 71cb183356
commit 5ec68f6453
5 changed files with 24 additions and 17 deletions

View File

@ -73,6 +73,13 @@ ngx_int_t ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in)
continue; continue;
} }
bsize = ngx_buf_size(ctx->in->buf);
if (bsize == 0) {
ctx->in = ctx->in->next;
continue;
}
if (ctx->buf == NULL) { if (ctx->buf == NULL) {
/* get the free buf */ /* 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) { if (ctx->in->buf->last_buf) {
bsize = ngx_buf_size(ctx->in->buf);
if (bsize < ctx->bufs.size) { if (bsize < ctx->bufs.size) {
/* /*

View File

@ -626,21 +626,21 @@ static ngx_int_t ngx_rtsig_process_overflow(ngx_cycle_t *cycle)
cycle->log, 0, cycle->log, 0,
"poll() failed while the overflow recover"); "poll() failed while the overflow recover");
if (err != NGX_EINTR) { if (err == NGX_EINTR) {
continue;
}
}
break; break;
} }
}
}
if (ready <= 0) { if (ready <= 0) {
continue; continue;
} }
if (n) {
if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
return NGX_ERROR; return NGX_ERROR;
} }
}
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
c = &cycle->connections[overflow_list[i].fd]; c = &cycle->connections[overflow_list[i].fd];
@ -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) { 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 * is bigger than
* /proc/sys/kernel/rtsig-max / rtsig_overflow_threshold * /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 * 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 */ } while (ngx_rtsig_process_events(cycle) == NGX_OK) { /* void */ }

View File

@ -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) ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
{ {
int last; int last;
off_t size, flush, sent; off_t size, flush, sent, bsize;
ngx_chain_t *cl, *ln, **ll, *chain; ngx_chain_t *cl, *ln, **ll, *chain;
ngx_connection_t *c; ngx_connection_t *c;
ngx_http_core_loc_conf_t *clcf; 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;
ll = &cl->next; 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) { if (cl->buf->flush || cl->buf->recycled) {
flush = size; flush = size;

View File

@ -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) { if (cl && cl->buf->in_file && send < limit) {
file = cl->buf; file = cl->buf;
fsize = 0;
/* coalesce the neighbouring file bufs */ /* coalesce the neighbouring file bufs */

View File

@ -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) { if (header.nelts == 0 && cl && cl->buf->in_file && send < limit) {
file = cl->buf; file = cl->buf;
fsize = 0;
/* coalesce the neighbouring file bufs */ /* coalesce the neighbouring file bufs */