summaryrefslogtreecommitdiff
path: root/core/sendfile.c
diff options
context:
space:
mode:
authorRoberto De Ioris <roberto@unbit.it>2013-01-20 11:41:43 +0100
committerRoberto De Ioris <roberto@unbit.it>2013-01-20 11:41:43 +0100
commit4e2178ffab171724ab02b24dfff42e3cf2b3426b (patch)
treeb8294b46e3b8f527348090572d1cd0ae5c20a5a1 /core/sendfile.c
parent37e153d5de9edfb0eae270a398a3b353a8663bd9 (diff)
downloaduwsgi-4e2178ffab171724ab02b24dfff42e3cf2b3426b.tar.gz
another WSGI optimization
Diffstat (limited to 'core/sendfile.c')
-rw-r--r--core/sendfile.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/core/sendfile.c b/core/sendfile.c
index 788eef9a..b5e467ba 100644
--- a/core/sendfile.c
+++ b/core/sendfile.c
@@ -38,31 +38,8 @@ ssize_t uwsgi_sendfile_do(int sockfd, int filefd, size_t pos, size_t len) {
return -1;
#elif defined(__linux__) || defined(__sun__)
- int sf_ret;
- size_t written = 0;
-
- if (async > 1) {
- sf_ret = sendfile(sockfd, filefd, pos, chunk);
- if (sf_ret < 0) {
- uwsgi_error("sendfile()");
- return 0;
- }
- return sf_ret;
- }
-
- while (written < filesize) {
- sf_ret = sendfile(sockfd, filefd, pos, filesize - written);
- if (sf_ret < 0) {
- uwsgi_error("sendfile()");
- return 0;
- }
- else if (sf_ret == 0) {
- return 0;
- }
- written += sf_ret;
- }
- return written;
-
+ off_t off = pos;
+ return sendfile(sockfd, filefd, &off, len);
#else
static size_t nosf_buf_size = 0;
static char *nosf_buf;