diff options
author | Roberto De Ioris <roberto@unbit.it> | 2013-01-20 11:41:43 +0100 |
---|---|---|
committer | Roberto De Ioris <roberto@unbit.it> | 2013-01-20 11:41:43 +0100 |
commit | 4e2178ffab171724ab02b24dfff42e3cf2b3426b (patch) | |
tree | b8294b46e3b8f527348090572d1cd0ae5c20a5a1 /core/sendfile.c | |
parent | 37e153d5de9edfb0eae270a398a3b353a8663bd9 (diff) | |
download | uwsgi-4e2178ffab171724ab02b24dfff42e3cf2b3426b.tar.gz |
another WSGI optimization
Diffstat (limited to 'core/sendfile.c')
-rw-r--r-- | core/sendfile.c | 27 |
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; |