[PATCH] Fixed unix ngx_write_chain_to_file() to return total bytes written
Maxim Dounin
mdounin at mdounin.ru
Thu Oct 20 12:36:01 UTC 2011
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1319074243 -14400
# Node ID 13566dde55124ae2d72f875734752cf4c7857b98
# Parent b07d81a20619e790bb0433780c58dc35ec4260ad
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
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -153,7 +153,7 @@ ngx_write_chain_to_file(ngx_file_t *file
{
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 @@ ngx_write_chain_to_file(ngx_file_t *file
offset);
}
+ total = 0;
+
vec.elts = iovs;
vec.size = sizeof(struct iovec);
vec.nalloc = NGX_IOVS;
@@ -233,10 +235,11 @@ ngx_write_chain_to_file(ngx_file_t *file
file->sys_offset += n;
file->offset += n;
+ total += n;
} while (cl);
- return n;
+ return total;
}
More information about the nginx-devel
mailing list