Mercurial > hg > nginx
comparison src/os/unix/ngx_linux_sendfile_chain.c @ 5322:bdb3588681c9
Unbreak building on Linux without sendfile64() support.
It was broken in 8e446a2daf48 when the NGX_SENDFILE_LIMIT constant was added
to ngx_linux_sendfile_chain.c having the same name as already defined one in
ngx_linux_config.h.
The newer is needed to overcome a bug in old Linux kernels by limiting the
number of bytes to send per sendfile() syscall. The older is used with
sendfile() on ancient kernels that works with 32-bit offsets only.
One of these renamed to NGX_SENDFILE_MAXSIZE.
author | Valentin Bartenev <vbart@nginx.com> |
---|---|
date | Thu, 15 Aug 2013 19:14:33 +0400 |
parents | ad137a80919f |
children | 188481078faf |
comparison
equal
deleted
inserted
replaced
5321:9806f7932474 | 5322:bdb3588681c9 |
---|---|
22 * On Linux up to 2.6.16 sendfile() does not allow to pass the count parameter | 22 * On Linux up to 2.6.16 sendfile() does not allow to pass the count parameter |
23 * more than 2G-1 bytes even on 64-bit platforms: it returns EINVAL, | 23 * more than 2G-1 bytes even on 64-bit platforms: it returns EINVAL, |
24 * so we limit it to 2G-1 bytes. | 24 * so we limit it to 2G-1 bytes. |
25 */ | 25 */ |
26 | 26 |
27 #define NGX_SENDFILE_LIMIT 2147483647L | 27 #define NGX_SENDFILE_MAXSIZE 2147483647L |
28 | 28 |
29 | 29 |
30 #if (IOV_MAX > 64) | 30 #if (IOV_MAX > 64) |
31 #define NGX_HEADERS 64 | 31 #define NGX_HEADERS 64 |
32 #else | 32 #else |
61 } | 61 } |
62 | 62 |
63 | 63 |
64 /* the maximum limit size is 2G-1 - the page size */ | 64 /* the maximum limit size is 2G-1 - the page size */ |
65 | 65 |
66 if (limit == 0 || limit > (off_t) (NGX_SENDFILE_LIMIT - ngx_pagesize)) { | 66 if (limit == 0 || limit > (off_t) (NGX_SENDFILE_MAXSIZE - ngx_pagesize)) { |
67 limit = NGX_SENDFILE_LIMIT - ngx_pagesize; | 67 limit = NGX_SENDFILE_MAXSIZE - ngx_pagesize; |
68 } | 68 } |
69 | 69 |
70 | 70 |
71 send = 0; | 71 send = 0; |
72 | 72 |