int network_write_chunkqueue_writev(server *srv, connection *con, int fd, chunkqueue *cq, off_t max_bytes) { while (max_bytes > 0 && NULL != cq->first) { int r = -1; switch (cq->first->type) { case MEM_CHUNK: r = network_writev_mem_chunks(srv, con, fd, cq, &max_bytes); break; case FILE_CHUNK: r = network_write_file_chunk_mmap(srv, con, fd, cq, &max_bytes); break; } if (-3 == r) return 0; if (0 != r) return r; } return 0; }
int network_write_chunkqueue_sendfile(server *srv, connection *con, int fd, chunkqueue *cq, off_t max_bytes) { while (max_bytes > 0 && NULL != cq->first) { int r = -1; switch (cq->first->type) { case MEM_CHUNK: r = network_writev_mem_chunks(srv, con, fd, cq, &max_bytes); break; case FILE_CHUNK: r = network_write_file_chunk_sendfile(srv, con, fd, cq, &max_bytes); break; case SMB_CHUNK: #ifndef EMBEDDED_EANBLE r = network_write_smbfile_chunk_sendfile(srv, con, fd, cq, &max_bytes); #endif break; } if (-3 == r) return 0; if (0 != r) return r; } return 0; }