From 89eae52df8c110525ce08e4b2bbb65f79b8bc9f2 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Tue, 12 Oct 2010 12:06:52 +0000 Subject: file AIO read may be posted inside loop --- src/core/ngx_output_chain.c | 12 ++++++------ src/http/ngx_http_copy_filter_module.c | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c index f51d69000..4f100a818 100644 --- a/src/core/ngx_output_chain.c +++ b/src/core/ngx_output_chain.c @@ -74,18 +74,18 @@ ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in) } } -#if (NGX_HAVE_FILE_AIO) - if (ctx->aio) { - return NGX_AGAIN; - } -#endif - out = NULL; last_out = &out; last = NGX_NONE; for ( ;; ) { +#if (NGX_HAVE_FILE_AIO) + if (ctx->aio) { + return NGX_AGAIN; + } +#endif + while (ctx->in) { /* diff --git a/src/http/ngx_http_copy_filter_module.c b/src/http/ngx_http_copy_filter_module.c index d492f321d..2dd4a627b 100644 --- a/src/http/ngx_http_copy_filter_module.c +++ b/src/http/ngx_http_copy_filter_module.c @@ -211,6 +211,7 @@ ngx_http_copy_aio_handler(ngx_output_chain_ctx_t *ctx, ngx_file_t *file) r->main->blocked++; r->aio = 1; + ctx->aio = 1; } -- cgit v1.2.1