nginx-0.0.1-2003-11-27-22:01:37 import
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index 8fe5cef..c7d69fe 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -9,9 +9,10 @@
int fd;
char *prev;
off_t fprev;
- size_t sent;
+ size_t sent, size;
ssize_t n;
ngx_int_t eintr;
+ ngx_err_t err;
sendfilevec_t *sfv;
ngx_array_t vec;
ngx_event_t *wev;
@@ -26,10 +27,14 @@
do {
fd = SFV_FD_SELF;
prev = NULL;
+ fprev = 0;
sfv = NULL;
eintr = 0;
sent = 0;
+ ngx_init_array(vec, c->pool, 10, sizeof(sendfilevec_t),
+ NGX_CHAIN_ERROR);
+
/* create the sendfilevec and coalesce the neighbouring hunks */
for (cl = in; cl; cl = cl->next) {
@@ -47,7 +52,7 @@
ngx_test_null(sfv, ngx_push_array(&vec), NGX_CHAIN_ERROR);
sfv->sfv_fd = SFV_FD_SELF;
sfv->sfv_flag = 0;
- sfv->sfv_off = cl->hunk->pos;
+ sfv->sfv_off = (off_t) (uintptr_t) cl->hunk->pos;
sfv->sfv_len = cl->hunk->last - cl->hunk->pos;
}
@@ -72,7 +77,7 @@
}
}
- n = sendfile(c->fd, vec->elts, vec->nelts, &sent);
+ n = sendfilev(c->fd, vec.elts, vec.nelts, &sent);
if (n == -1) {
err = ngx_errno;
@@ -93,7 +98,7 @@
}
#if (NGX_DEBUG_WRITE_CHAIN)
- ngx_log_debug(c->log, "sendfilev: %d " SIZE_T_FMT ", n _ sent);
+ ngx_log_debug(c->log, "sendfilev: %d " SIZE_T_FMT _ n _ sent);
#endif
c->sent += sent;