annotate auto/os/linux @ 6359:dac6eda40475 stable-1.8

Resolver: fixed use-after-free memory accesses with CNAME. When several requests were waiting for a response, then after getting a CNAME response only the last request's context had the name updated. Contexts of other requests had the wrong name. This name was used by ngx_resolve_name_done() to find the node to remove the request context from. When the name was wrong, the request could not be properly cancelled, its context was freed but stayed linked to the node's waiting list. This happened e.g. when the first request was aborted or timed out before the resolving completed. When it completed, this triggered a use-after-free memory access by calling ctx->handler of already freed request context. The bug manifests itself by "could not cancel <name> resolving" alerts in error_log. When a request was responded with a CNAME, the request context kept the pointer to the original node's rn->u.cname. If the original node expired before the resolving timed out or completed with an error, this would trigger a use-after-free memory access via ctx->name in ctx->handler(). The fix is to keep ctx->name unmodified. The name from context is no longer used by ngx_resolve_name_done(). Instead, we now keep the pointer to resolver node to which this request is linked. Keeping the original name intact also improves logging.
author Roman Arutyunyan <arut@nginx.com>
date Tue, 26 Jan 2016 16:46:59 +0300
parents 36b58ddb566d
children adba26ff70b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
1
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4002
diff changeset
3 # Copyright (C) Nginx, Inc.
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
4
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
6 have=NGX_LINUX . auto/have_headers
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
7
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 CORE_INCS="$UNIX_INCS"
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
10 CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
12 ngx_spacer='
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
13 '
283
8f65fee68270 nginx-0.0.2-2004-03-10-20:55:19 import
Igor Sysoev <igor@sysoev.ru>
parents: 259
diff changeset
14
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
15 cc_aux_flags="$CC_AUX_FLAGS"
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
16 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
18
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
19 # Linux kernel version
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
20
1927
220c2515a9c9 use uname instead of often outdated header file
Igor Sysoev <igor@sysoev.ru>
parents: 1926
diff changeset
21 version=$((`uname -r \
4002
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
22 | sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
23 \1*256*256+\2*256+\3/p' \
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
24 -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`))
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
25
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
26 version=${version:-0}
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
27
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
28
1921
cf148caa9347 disable rtsig automatic building in post 2.6.18 Linux kernels
Igor Sysoev <igor@sysoev.ru>
parents: 1920
diff changeset
29 # enable the rt signals on Linux between 2.2.19 and 2.6.17
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
30
1926
95f0145bbef4 use correct version: real hex numbers
Igor Sysoev <igor@sysoev.ru>
parents: 1921
diff changeset
31 if [ \( $version -ge 131603 -a $version -lt 132626 \) -o $EVENT_RTSIG = YES ]
1921
cf148caa9347 disable rtsig automatic building in post 2.6.18 Linux kernels
Igor Sysoev <igor@sysoev.ru>
parents: 1920
diff changeset
32 then
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
33 echo " + rt signals found"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
34 have=NGX_HAVE_RTSIG . auto/have
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
35 EVENT_MODULES="$EVENT_MODULES $RTSIG_MODULE"
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
36 CORE_SRCS="$CORE_SRCS $RTSIG_SRCS"
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
37 EVENT_FOUND=YES
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
38 fi
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
39
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
40
3286
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
41 # posix_fadvise64() had been implemented in 2.5.60
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
42
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
43 if [ $version -lt 132412 ]; then
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
44 have=NGX_HAVE_POSIX_FADVISE . auto/nohave
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
45 fi
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
46
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
47 # epoll, EPOLLET version
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
48
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
49 ngx_feature="epoll"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
50 ngx_feature_name="NGX_HAVE_EPOLL"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
51 ngx_feature_run=yes
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
52 ngx_feature_incs="#include <sys/epoll.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
53 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
54 ngx_feature_libs=
4543
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
55 ngx_feature_test="int efd = 0;
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
56 struct epoll_event ee;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
57 ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
58 ee.data.ptr = NULL;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
59 efd = epoll_create(100);
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
60 if (efd == -1) return 1;"
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
61 . auto/feature
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
62
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
63 if [ $ngx_found = yes ]; then
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
64 have=NGX_HAVE_CLEAR_EVENT . auto/have
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
65 CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
66 EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
67 EVENT_FOUND=YES
5372
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
68
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
69
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
70 # EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
71
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
72 ngx_feature="EPOLLRDHUP"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
73 ngx_feature_name="NGX_HAVE_EPOLLRDHUP"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
74 ngx_feature_run=no
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
75 ngx_feature_incs="#include <sys/epoll.h>"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
76 ngx_feature_path=
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
77 ngx_feature_libs=
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
78 ngx_feature_test="int efd = 0, fd = 0;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
79 struct epoll_event ee;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
80 ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
81 ee.data.ptr = NULL;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
82 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
83 . auto/feature
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
84 fi
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
85
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
86
5356
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
87 # O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
88
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
89 ngx_feature="O_PATH"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
90 ngx_feature_name="NGX_HAVE_O_PATH"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
91 ngx_feature_run=no
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
92 ngx_feature_incs="#include <sys/types.h>
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
93 #include <sys/stat.h>
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
94 #include <fcntl.h>"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
95 ngx_feature_path=
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
96 ngx_feature_libs=
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
97 ngx_feature_test="int fd; struct stat sb;
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
98 fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW);
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
99 if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
100 . auto/feature
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
101
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
102
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
103 # sendfile()
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
104
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
105 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
106 ngx_feature="sendfile()"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
107 ngx_feature_name="NGX_HAVE_SENDFILE"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
108 ngx_feature_run=yes
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
109 ngx_feature_incs="#include <sys/sendfile.h>
2598
87e739049e93 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1927
diff changeset
110 #include <errno.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
111 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
112 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
113 ngx_feature_test="int s = 0, fd = 1;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
114 ssize_t n; off_t off = 0;
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
115 n = sendfile(s, fd, &off, 1);
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
116 if (n == -1 && errno == ENOSYS) return 1"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
117 . auto/feature
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
118
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
119 if [ $ngx_found = yes ]; then
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
120 CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
121 fi
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
122
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
123
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
124 # sendfile64()
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
126 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
127 ngx_feature="sendfile64()"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
128 ngx_feature_name="NGX_HAVE_SENDFILE64"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
129 ngx_feature_run=yes
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
130 ngx_feature_incs="#include <sys/sendfile.h>
2598
87e739049e93 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1927
diff changeset
131 #include <errno.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
132 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
133 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
134 ngx_feature_test="int s = 0, fd = 1;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
135 ssize_t n; off_t off = 0;
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
136 n = sendfile(s, fd, &off, 1);
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
137 if (n == -1 && errno == ENOSYS) return 1"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
138 . auto/feature
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
139
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
140
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
141 ngx_include="sys/prctl.h"; . auto/include
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
142
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
143 # prctl(PR_SET_DUMPABLE)
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
144
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
145 ngx_feature="prctl(PR_SET_DUMPABLE)"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
146 ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
147 ngx_feature_run=yes
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
148 ngx_feature_incs="#include <sys/prctl.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
149 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
150 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
151 ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
152 . auto/feature
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
153
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
154
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
155 # sched_setaffinity()
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
156
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
157 ngx_feature="sched_setaffinity()"
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
158 ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
159 ngx_feature_run=no
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
160 ngx_feature_incs="#include <sched.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
161 ngx_feature_path=
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
162 ngx_feature_libs=
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
163 ngx_feature_test="cpu_set_t mask;
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
164 CPU_ZERO(&mask);
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
165 sched_setaffinity(0, sizeof(cpu_set_t), &mask)"
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
166 . auto/feature
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
167
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
168
2660
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
169 # crypt_r()
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
170
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
171 ngx_feature="crypt_r()"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
172 ngx_feature_name="NGX_HAVE_GNU_CRYPT_R"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
173 ngx_feature_run=no
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
174 ngx_feature_incs="#include <crypt.h>"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
175 ngx_feature_path=
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
176 ngx_feature_libs=-lcrypt
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
177 ngx_feature_test="struct crypt_data cd;
4543
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
178 crypt_r(\"key\", \"salt\", &cd);"
2660
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
179 . auto/feature
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
180
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
181
2615
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
182 ngx_include="sys/vfs.h"; . auto/include
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
183
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
184
2747
ee5de4f120f4 fix GNU strerror_r() detection, the bug has been inroduced in r2600
Igor Sysoev <igor@sysoev.ru>
parents: 2660
diff changeset
185 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"