Changeset 2008
- Timestamp:
- 10/27/2007 06:18:49 PM (9 months ago)
- Files:
-
- trunk/src/network_solaris_sendfilev.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/network_solaris_sendfilev.c
r1646 r2008 40 40 41 41 NETWORK_BACKEND_WRITE(solarissendfilev) { 42 chunk *c ;42 chunk *c, *tc; 43 43 size_t chunks_written = 0; 44 44 … … 49 49 switch(c->type) { 50 50 case MEM_CHUNK: 51 ret = network_write_chunkqueue_writev_mem(srv, con, sock, cq, &c); 51 ret = network_write_chunkqueue_writev_mem(srv, con, sock, cq, c); 52 53 /* check which chunks are finished now */ 54 for (tc = c; tc; tc = tc->next) { 55 /* finished the chunk */ 56 if (tc->offset == tc->mem->used - 1) { 57 /* skip the first c->next as that will be done by the c = c->next in the other for()-loop */ 58 if (chunk_finished) { 59 c = c->next; 60 } else { 61 chunk_finished = 1; 62 } 63 } else { 64 break; 65 } 66 } 52 67 53 68 if (ret != NETWORK_STATUS_SUCCESS) { 54 69 return ret; 55 70 } 56 57 chunk_finished = 1;58 71 59 72 break; … … 94 107 /* Solaris sendfilev() */ 95 108 if (-1 == (r = sendfilev(sock->fd, &fvec, 1, &written))) { 96 if (errno != EAGAIN) { 97 log_error_write(srv, __FILE__, __LINE__, "ssd", "sendfile: ", strerror(errno), errno); 109 switch (errno) { 110 case EAGAIN: 111 break; 112 default: 113 ERROR("sendfilev() failed: %s (errno=%d)", strerror(errno), errno); 98 114 99 115 close(ifd); … … 115 131 } 116 132 default: 117 log_error_write(srv, __FILE__, __LINE__, "ds", c, "type not known");133 ERROR("chunk-type '%s' is not known", c->type); 118 134 119 135 return NETWORK_STATUS_FATAL_ERROR; … … 123 139 /* not finished yet */ 124 140 125 break;141 return NETWORK_STATUS_WAIT_FOR_EVENT; 126 142 } 127 143 }

