diff options
author | Sebastian | 2016-02-10 21:53:15 +0100 |
---|---|---|
committer | Sebastian | 2016-02-11 00:09:39 +0100 |
commit | 1ee67aedd55b452c7d5851d0e39e01aef4aca766 (patch) | |
tree | caf482cd40463d5a4b15f14e5bd5b2d34bf936bd /src/server/net.c | |
parent | cleanup commits (diff) | |
download | dnbd3-1ee67aedd55b452c7d5851d0e39e01aef4aca766.tar.gz dnbd3-1ee67aedd55b452c7d5851d0e39e01aef4aca766.tar.xz dnbd3-1ee67aedd55b452c7d5851d0e39e01aef4aca766.zip |
dnbd3server build success on freebsd :)
Diffstat (limited to 'src/server/net.c')
-rw-r--r-- | src/server/net.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/server/net.c b/src/server/net.c index d840718..b919d62 100644 --- a/src/server/net.c +++ b/src/server/net.c @@ -28,9 +28,17 @@ #include "../shared/sockhelper.h" #include "../serialize.h" -#include <sys/sendfile.h> #include <assert.h> +#ifdef __linux__ +#include <sys/sendfile.h> +#endif +#ifdef __FreeBSD__ +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/uio.h> +#endif + static char nullbytes[500]; static uint64_t totalBytesSent = 0; @@ -350,7 +358,12 @@ void *net_client_handler(void *dnbd3_client) realBytes = image->realFilesize - request.offset; } while ( done < realBytes ) { +#ifdef __linux__ const ssize_t ret = sendfile( client->sock, image_file, &offset, realBytes - done ); +#elif defined(__FreeBSD__) + off_t sent; + int ret = sendfile( image_file, client->sock, offset, realBytes - done, NULL, &sent, 0 ); +#endif if ( ret <= 0 ) { const int err = errno; if ( lock ) pthread_mutex_unlock( &client->sendMutex ); |