Fixed unix ngx_write_chain_to_file() to return total bytes written.
Previously result of last iteration's writev() was returned. This was
unnoticed as return value was only used if chain contained only one or
two buffers.
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 89ab8d6..4bfde44 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -153,7 +153,7 @@
{
u_char *prev;
size_t size;
- ssize_t n;
+ ssize_t total, n;
ngx_array_t vec;
struct iovec *iov, iovs[NGX_IOVS];
@@ -165,6 +165,8 @@
offset);
}
+ total = 0;
+
vec.elts = iovs;
vec.size = sizeof(struct iovec);
vec.nalloc = NGX_IOVS;
@@ -233,10 +235,11 @@
file->sys_offset += n;
file->offset += n;
+ total += n;
} while (cl);
- return n;
+ return total;
}