From b3c1abdcd8dd91ca1298c47b5abd567b9bcb3cf2 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Mon, 14 Mar 2016 22:42:35 +0300 Subject: Fixed handling of EAGAIN with sendfile in threads. --- src/os/unix/ngx_linux_sendfile_chain.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/os/unix/ngx_linux_sendfile_chain.c') diff --git a/src/os/unix/ngx_linux_sendfile_chain.c b/src/os/unix/ngx_linux_sendfile_chain.c index 9f272225a..09c153059 100644 --- a/src/os/unix/ngx_linux_sendfile_chain.c +++ b/src/os/unix/ngx_linux_sendfile_chain.c @@ -343,7 +343,12 @@ ngx_linux_sendfile_thread(ngx_connection_t *c, ngx_buf_t *file, size_t size, if (task->event.complete) { task->event.complete = 0; - if (ctx->err && ctx->err != NGX_EAGAIN) { + if (ctx->err == NGX_EAGAIN) { + *sent = 0; + return NGX_AGAIN; + } + + if (ctx->err) { wev->error = 1; ngx_connection_error(c, ctx->err, "sendfile() failed"); return NGX_ERROR; -- cgit v1.2.3