| 135 pool_free(sys->pool, st); |
135 pool_free(sys->pool, st); |
| 136 } |
136 } |
| 137 |
137 |
| 138 #ifdef XP_UNIX |
138 #ifdef XP_UNIX |
| 139 ssize_t net_sys_write(Sysstream *st, const void *buf, size_t nbytes) { |
139 ssize_t net_sys_write(Sysstream *st, const void *buf, size_t nbytes) { |
| |
140 st->st.io_errno = 0; |
| 140 ssize_t r = write(st->fd, buf, nbytes); |
141 ssize_t r = write(st->fd, buf, nbytes); |
| 141 st->st.io_errno = errno; |
142 if(r <= 0) { |
| |
143 st->st.io_errno = errno; |
| |
144 } |
| 142 return r; |
145 return r; |
| 143 } |
146 } |
| 144 |
147 |
| 145 ssize_t net_sys_writev(Sysstream *st, struct iovec *iovec, int iovcnt) { |
148 ssize_t net_sys_writev(Sysstream *st, struct iovec *iovec, int iovcnt) { |
| 146 ssize_t r = writev(st->fd, iovec, iovcnt); |
149 ssize_t r = writev(st->fd, iovec, iovcnt); |
| 420 st->st.io_errno = 0; |
423 st->st.io_errno = 0; |
| 421 if(st->write_eof) return 0; |
424 if(st->write_eof) return 0; |
| 422 IOStream *fd = st->fd; |
425 IOStream *fd = st->fd; |
| 423 if(!st->chunked_enc) { |
426 if(!st->chunked_enc) { |
| 424 ssize_t w = fd->write(fd, buf, nbytes); |
427 ssize_t w = fd->write(fd, buf, nbytes); |
| |
428 if(w <= 0) { |
| |
429 st->st.io_errno = fd->io_errno; |
| |
430 } |
| 425 //st->written += w > 0 ? w : 0; |
431 //st->written += w > 0 ? w : 0; |
| 426 st->written += w; |
432 st->written += w; |
| 427 return w; |
433 return w; |
| 428 } else { |
434 } else { |
| 429 struct iovec io[8]; |
435 struct iovec io[8]; |