]> arthur.barton.de Git - netatalk.git/commitdiff
Fix broken sendfile on FreeBSD, from Denis Ahrens
authorFrank Lahm <franklahm@googlemail.com>
Thu, 9 Feb 2012 14:39:08 +0000 (15:39 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Thu, 9 Feb 2012 14:39:08 +0000 (15:39 +0100)
NEWS
libatalk/adouble/ad_sendfile.c

diff --git a/NEWS b/NEWS
index 2ad321a05a207e58fa40adec2765f5364ab1915d..88d44f7643e30d853024e585fd6691d22f683f9d 100644 (file)
--- 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
 ================
index aabb61ce106eff5f80e69d09ab06149facbfdb51..0e7b27835e69bc3f6dd3de803a07c091f3be2a46 100644 (file)
@@ -67,7 +67,16 @@ ssize_t sys_sendfile(int tofd, int fromfd, off_t *offset, size_t count)
 #include <sys/uio.h>
 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