diff src/os/unix/ngx_files.c @ 4220:4be8dd8dd547

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 20 Oct 2011 12:40:26 +0000
parents cf80c0b0109a
children 3203ddb78279
line wrap: on
line diff
--- 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;
 }