From d24a954821229e8835acb6d629ef1f09a4441e8b Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Thu, 9 Feb 2012 15:39:08 +0100 Subject: [PATCH] Fix broken sendfile on FreeBSD, from Denis Ahrens --- NEWS | 1 + libatalk/adouble/ad_sendfile.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/NEWS b/NEWS index 2ad321a..88d44f7 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Changes in 2.2.3 * UPD: based on Unicode 6.1.0 * UPD: experimental systemd service files: always run both afpd and cnid_metad * UPD: afpd: Ensure our umask is not altered by eg pam_umask +* FIX: afpd: sendfile() on FreeBSD was broken, courtesy of Denis Ahrens Changes in 2.2.2 ================ diff --git a/libatalk/adouble/ad_sendfile.c b/libatalk/adouble/ad_sendfile.c index aabb61c..0e7b278 100644 --- a/libatalk/adouble/ad_sendfile.c +++ b/libatalk/adouble/ad_sendfile.c @@ -67,7 +67,16 @@ ssize_t sys_sendfile(int tofd, int fromfd, off_t *offset, size_t count) #include ssize_t sys_sendfile(int tofd, int fromfd, off_t *offset, size_t count) { - return sendfile(fromfd, tofd, *offset, count, NULL, offset, 0); + off_t len; + int ret; + + ret = sendfile(fromfd, tofd, *offset, count, NULL, &len, 0); + + *offset += len; + + if (ret != 0) + return -1; + return len; } #else -- 1.7.4.1