summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2010-10-12 12:06:52 +0000
committerIgor Sysoev <igor@sysoev.ru>2010-10-12 12:06:52 +0000
commit89eae52df8c110525ce08e4b2bbb65f79b8bc9f2 (patch)
treeedee33e991d1e994b93f2d26f6f1d18c94c2d953
parent7087d5d72ae14bdabf56a956e20ea440b85e2d90 (diff)
downloadnginx-89eae52df8c110525ce08e4b2bbb65f79b8bc9f2.tar.gz
file AIO read may be posted inside loop
-rw-r--r--src/core/ngx_output_chain.c12
-rw-r--r--src/http/ngx_http_copy_filter_module.c1
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;
}