summaryrefslogtreecommitdiff
path: root/network_io
diff options
context:
space:
mode:
authorwrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68>2001-07-12 18:58:57 +0000
committerwrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68>2001-07-12 18:58:57 +0000
commitfba3288514f874ac3aca597e512d4502ad4f6cf5 (patch)
treeb7653d1952176bc23288ea0c7dbca4287a44f2ad /network_io
parent725dc79011adbfed0c16d707e9a6299c19185401 (diff)
downloadlibapr-fba3288514f874ac3aca597e512d4502ad4f6cf5.tar.gz
Return LARGE_FILE support for win32 sendfile (quiets compiler)
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@61927 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io')
-rw-r--r--network_io/win32/sendrecv.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/network_io/win32/sendrecv.c b/network_io/win32/sendrecv.c
index 865dbca6b..43cec4f2e 100644
--- a/network_io/win32/sendrecv.c
+++ b/network_io/win32/sendrecv.c
@@ -246,6 +246,7 @@ APR_DECLARE(apr_status_t) apr_sendfile(apr_socket_t *sock, apr_file_t *file,
{
apr_status_t status = APR_SUCCESS;
apr_ssize_t rv;
+ apr_off_t curoff = *offset;
DWORD dwFlags = 0;
DWORD nbytes;
OVERLAPPED overlapped;
@@ -258,9 +259,6 @@ APR_DECLARE(apr_status_t) apr_sendfile(apr_socket_t *sock, apr_file_t *file,
/* Initialize the overlapped structure */
memset(&overlapped,'\0', sizeof(overlapped));
- if (offset && *offset) {
- overlapped.Offset = *offset;
- }
#ifdef WAIT_FOR_EVENT
overlapped.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
#endif
@@ -310,6 +308,10 @@ APR_DECLARE(apr_status_t) apr_sendfile(apr_socket_t *sock, apr_file_t *file,
}
}
+ overlapped.Offset = (DWORD)(curoff);
+#if APR_HAS_LARGE_FILES
+ overlapped.OffsetHigh = (DWORD)(curoff >> 32);
+#endif
rv = TransmitFile(sock->sock, /* socket */
file->filehand, /* open file descriptor of the file to be sent */
nbytes, /* number of bytes to send. 0=send all */
@@ -357,7 +359,7 @@ APR_DECLARE(apr_status_t) apr_sendfile(apr_socket_t *sock, apr_file_t *file,
}
bytes_to_send -= nbytes;
*len += nbytes;
- overlapped.Offset += nbytes;
+ curoff += nbytes;
}