diff src/os/unix/ngx_solaris_sendfilev_chain.c @ 198:34995c5ec6c4

nginx-0.0.1-2003-11-27-22:01:37 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 27 Nov 2003 19:01:37 +0000
parents 0b81c7a0b133
children 70e1c7d2b83d
line wrap: on
line diff
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -9,9 +9,10 @@ ngx_chain_t *ngx_solaris_sendfilev_chain
     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 @@ ngx_chain_t *ngx_solaris_sendfilev_chain
     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_chain_t *ngx_solaris_sendfilev_chain
                     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 @@ ngx_chain_t *ngx_solaris_sendfilev_chain
             }
         }
 
-        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 @@ ngx_chain_t *ngx_solaris_sendfilev_chain
         }
 
 #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;