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