--- a/src/server/util/io.c Sat Oct 17 23:05:23 2015 +0200 +++ b/src/server/util/io.c Fri Oct 23 17:28:09 2015 +0200 @@ -136,8 +136,7 @@ return r; } -ssize_t net_stream_sendfile(NetIOStream *st, sendfiledata *sfd) { - // TODO: header and trailer +ssize_t net_stream_sendfile(NetIOStream *st, sendfiledata *sfd) { ssize_t ret = 0; off_t fileoffset = sfd->offset; if(sfd->fd->fd != -1) { @@ -168,7 +167,13 @@ 0); #endif #else // Solaris/Linux - ret = sendfile(st->fd, sfd->fd->fd, &fileoffset, sfd->len); + if(sfd->header) { + ret += write(st->fd, sfd->header, sfd->hlen); + } + ret += sendfile(st->fd, sfd->fd->fd, &fileoffset, sfd->len); + if(sfd->trailer) { + ret += write(st->fd, sfd->trailer, sfd->tlen); + } #endif } else { // TODO: regular copy