diff options
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_files.c | 10 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_sendfile_chain.c | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c index 9ed378dd2..adafc17cf 100644 --- a/src/os/unix/ngx_files.c +++ b/src/os/unix/ngx_files.c @@ -77,15 +77,15 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce, ce = ce->next; } - if (lseek(file->fd, offset, SEEK_SET) == -1) { - ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); - return NGX_ERROR; + if (file->offset != offset) { + if (lseek(file->fd, offset, SEEK_SET) == -1) { + ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); + return NGX_ERROR; + } } n = writev(file->fd, (struct iovec *) io.elts, io.nelts); - ngx_destroy_array(&io); - if (n == -1) { ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "writev() failed"); return NGX_ERROR; diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c index 1632424ce..093265a33 100644 --- a/src/os/unix/ngx_freebsd_sendfile_chain.c +++ b/src/os/unix/ngx_freebsd_sendfile_chain.c @@ -83,9 +83,9 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in) if (ce && (ce->hunk->type & NGX_HUNK_FILE)) { file = ce->hunk; - ce = ce->next; fsize = (size_t) (file->file_last - file->file_pos); fprev = file->file_last; + ce = ce->next; /* coalesce the neighbouring file hunks */ |