about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2017-03-11 00:57:09 +0000
committerEric Wong <e@80x24.org>2017-05-11 21:09:11 +0000
commit93c11990d215c678d254a56a7b3bc63e3a53e0de (patch)
treec0f86f2bc2f756dd8e62315bba16a1524ae3e355
parente5c86cb81fceb3b37019aed701b475bf40802c10 (diff)
downloadcmogstored-93c11990d215c678d254a56a7b3bc63e3a53e0de.tar.gz
While we never call sendfile without an offset, some projects
may copy our code and want to use it without an offset.
-rw-r--r--compat_sendfile.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/compat_sendfile.h b/compat_sendfile.h
index 8413891..c1cc9e4 100644
--- a/compat_sendfile.h
+++ b/compat_sendfile.h
@@ -12,14 +12,15 @@ static ssize_t compat_sendfile(int sockfd, int filefd, off_t *off, size_t count)
 
         max_pread = MIN(max_pread, count);
         do {
-                r = pread(filefd, buf, max_pread, *off);
+                r = off ? pread(filefd, buf, max_pread, *off) :
+                        read(filefd, buf, max_pread);
         } while (r < 0 && errno == EINTR);
 
         if (r <= 0)
                 return r;
 
         w = write(sockfd, buf, r);
-        if (w > 0)
+        if (w > 0 && off)
                 *off += w;
         return w;
 }