Mercurial > hg > nginx-quic
annotate auto/os/linux @ 7235:c2a0a838c40f
gRPC: special handling of "trailer only" responses.
The gRPC protocol makes a distinction between HEADERS frame with
the END_STREAM flag set, and a HEADERS frame followed by an empty
DATA frame with the END_STREAM flag. The latter is not permitted,
and results in errors not being propagated through nginx. Instead,
gRPC clients complain that "server closed the stream without sending
trailers" (seen in grpc-go) or "13: Received RST_STREAM with error
code 2" (seen in grpc-c).
To fix this, nginx now returns HEADERS with the END_STREAM flag if
the response length is known to be 0, and we are not expecting
any trailer headers to be added. And the response length is
explicitly set to 0 in the gRPC proxy if we see initial HEADERS frame
with the END_STREAM flag set.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 17 Mar 2018 23:04:26 +0300 |
parents | 7f28b61c92f0 |
children | f7e79596baf2 |
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 | 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 | 6 have=NGX_LINUX . auto/have_headers |
455 | 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 | 12 ngx_spacer=' |
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 | 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 | 26 version=${version:-0} |
27 | |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
28 |
3286
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
29 # 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
|
30 |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
31 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
|
32 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
|
33 fi |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
34 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
35 # 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
|
36 |
455 | 37 ngx_feature="epoll" |
469 | 38 ngx_feature_name="NGX_HAVE_EPOLL" |
591 | 39 ngx_feature_run=yes |
455 | 40 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
|
41 ngx_feature_path= |
455 | 42 ngx_feature_libs= |
4543
51744fa997c7
Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
43 ngx_feature_test="int efd = 0; |
455 | 44 struct epoll_event ee; |
45 ee.events = EPOLLIN|EPOLLOUT|EPOLLET; | |
46 ee.data.ptr = NULL; | |
6622
e393c0bf53d3
Configure: fix build with -Werror=unused-but-set-variable.
Piotr Sikora <piotrsikora@google.com>
parents:
6126
diff
changeset
|
47 (void) ee; |
455 | 48 efd = epoll_create(100); |
49 if (efd == -1) return 1;" | |
50 . auto/feature | |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
51 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
52 if [ $ngx_found = yes ]; then |
469 | 53 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
|
54 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
|
55 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
|
56 EVENT_FOUND=YES |
5372
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
57 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
58 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
59 # 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
|
60 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
61 ngx_feature="EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
62 ngx_feature_name="NGX_HAVE_EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
63 ngx_feature_run=no |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
64 ngx_feature_incs="#include <sys/epoll.h>" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
65 ngx_feature_path= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
66 ngx_feature_libs= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
67 ngx_feature_test="int efd = 0, fd = 0; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
68 struct epoll_event ee; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
69 ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
70 ee.data.ptr = NULL; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
71 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
72 . auto/feature |
6635
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
73 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
74 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
75 # EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
76 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
77 ngx_feature="EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
78 ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
79 ngx_feature_run=no |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
80 ngx_feature_incs="#include <sys/epoll.h>" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
81 ngx_feature_path= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
82 ngx_feature_libs= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
83 ngx_feature_test="int efd = 0, fd = 0; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
84 struct epoll_event ee; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
85 ee.events = EPOLLIN|EPOLLEXCLUSIVE; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
86 ee.data.ptr = NULL; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
87 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
88 . auto/feature |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
89 fi |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
90 |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
91 |
5356
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
92 # 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
|
93 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
94 ngx_feature="O_PATH" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
95 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
|
96 ngx_feature_run=no |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
97 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
|
98 #include <sys/stat.h> |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
99 #include <fcntl.h>" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
100 ngx_feature_path= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
101 ngx_feature_libs= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
102 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
|
103 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
|
104 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
|
105 . auto/feature |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
106 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
107 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
108 # sendfile() |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
109 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
110 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" |
455 | 111 ngx_feature="sendfile()" |
469 | 112 ngx_feature_name="NGX_HAVE_SENDFILE" |
591 | 113 ngx_feature_run=yes |
114 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 115 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
116 ngx_feature_path= |
455 | 117 ngx_feature_libs= |
118 ngx_feature_test="int s = 0, fd = 1; | |
119 ssize_t n; off_t off = 0; | |
591 | 120 n = sendfile(s, fd, &off, 1); |
121 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 122 . auto/feature |
248
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 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
|
125 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
|
126 fi |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
127 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
128 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
129 # sendfile64() |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
130 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
131 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
455 | 132 ngx_feature="sendfile64()" |
469 | 133 ngx_feature_name="NGX_HAVE_SENDFILE64" |
591 | 134 ngx_feature_run=yes |
135 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 136 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
137 ngx_feature_path= |
455 | 138 ngx_feature_libs= |
139 ngx_feature_test="int s = 0, fd = 1; | |
140 ssize_t n; off_t off = 0; | |
591 | 141 n = sendfile(s, fd, &off, 1); |
142 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 143 . auto/feature |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
144 |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
145 |
455 | 146 ngx_include="sys/prctl.h"; . auto/include |
147 | |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
148 # 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
|
149 |
455 | 150 ngx_feature="prctl(PR_SET_DUMPABLE)" |
469 | 151 ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" |
455 | 152 ngx_feature_run=yes |
153 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
|
154 ngx_feature_path= |
455 | 155 ngx_feature_libs= |
156 ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" | |
157 . auto/feature | |
577 | 158 |
159 | |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
160 # prctl(PR_SET_KEEPCAPS) |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
161 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
162 ngx_feature="prctl(PR_SET_KEEPCAPS)" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
163 ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
164 ngx_feature_run=yes |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
165 ngx_feature_incs="#include <sys/prctl.h>" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
166 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
167 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
168 ngx_feature_test="if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1) return 1" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
169 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
170 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
171 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
172 # capabilities |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
173 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
174 ngx_feature="capabilities" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
175 ngx_feature_name="NGX_HAVE_CAPABILITIES" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
176 ngx_feature_run=no |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
177 ngx_feature_incs="#include <linux/capability.h> |
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
178 #include <sys/syscall.h>" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
179 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
180 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
181 ngx_feature_test="struct __user_cap_data_struct data; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
182 struct __user_cap_header_struct header; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
183 |
7176
7f28b61c92f0
Fixed capabilities version.
Roman Arutyunyan <arut@nginx.com>
parents:
7175
diff
changeset
|
184 header.version = _LINUX_CAPABILITY_VERSION_1; |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
185 data.effective = CAP_TO_MASK(CAP_NET_RAW); |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
186 data.permitted = 0; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
187 |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
188 (void) SYS_capset" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
189 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
190 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
191 |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
192 # crypt_r() |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
193 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
194 ngx_feature="crypt_r()" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
195 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
|
196 ngx_feature_run=no |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
197 ngx_feature_incs="#include <crypt.h>" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
198 ngx_feature_path= |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
199 ngx_feature_libs=-lcrypt |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
200 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
|
201 crypt_r(\"key\", \"salt\", &cd);" |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
202 . auto/feature |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
203 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
204 |
2615 | 205 ngx_include="sys/vfs.h"; . auto/include |
206 | |
207 | |
2747
ee5de4f120f4
fix GNU strerror_r() detection, the bug has been inroduced in r2600
Igor Sysoev <igor@sysoev.ru>
parents:
2660
diff
changeset
|
208 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |