diff options
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | eio.c | 3 |
2 files changed, 6 insertions, 0 deletions
@@ -42,3 +42,6 @@ TODO: fadvise request combination EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST. - port to openbsd (another blatantly broken non-UNIX/POSIX platform). - fix eio_custom prototype. + - work around a Linux (and likely FreeBSD and other kernels) bug + where sendfile would not transfer all the requested bytes on + large transfers, using a heuristic. @@ -1006,6 +1006,9 @@ eio__sendfile (int ofd, int ifd, off_t offset, size_t count, etp_worker *self) #elif defined (_WIN32) /* does not work, just for documentation of what would need to be done */ + /* actually, cannot be done like this, as TransmitFile changes the file offset, */ + /* libeio guarantees that the file offset does not change, and windows */ + /* has no way to get an independent handle to the same file description */ HANDLE h = TO_SOCKET (ifd); SetFilePointer (h, offset, 0, FILE_BEGIN); res = TransmitFile (TO_SOCKET (ofd), h, count, 0, 0, 0, 0); |