annotate auto/lib/libatomic/conf @ 7355:b64adc956643

Rewrite: removed r->err_status special handling (ticket #1634). Trying to look into r->err_status in the "return" directive makes it behave differently than real errors generated in other parts of the code, and is an endless source of various problems. This behaviour was introduced in 726:7b71936d5299 (0.4.4) with the comment "fix: "return" always overrode "error_page" response code". It is not clear if there were any real cases this was expected to fix, but there are several cases which are broken due to this change, some previously fixed (4147:7f64de1cc2c0). In ticket #1634, the problem is that when r->err_status is set to a non-special status code, it is not possible to return a response by simply returning r->err_status. If this is the case, the only option is to return script's e->status instead. An example configuration: location / { error_page 404 =200 /err502; return 404; } location = /err502 { return 502; } After the change, such a configuration will properly return standard 502 error, much like it happens when a 502 error is generated by proxy_pass. This also fixes the following configuration to properly close connection as clearly requested by "return 444": location / { error_page 404 /close; return 404; } location = /close { return 444; } Previously, this required "error_page 404 = /close;" to work as intended.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 21 Sep 2018 15:59:33 +0300
parents d620f497c50f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3363
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 3378
diff changeset
3 # Copyright (C) Nginx, Inc.
3363
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 if [ $NGX_LIBATOMIC != YES ]; then
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 have=NGX_HAVE_LIBATOMIC . auto/have
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/libatomic_ops.a"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/libatomic_ops.a"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 else
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 ngx_feature="atomic_ops library"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16 ngx_feature_name=NGX_HAVE_LIBATOMIC
3366
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
17 ngx_feature_run=yes
3378
5d17022a1e88 fix libatomic usage on arm, cris, hppa, m68k, and sparc platforms
Igor Sysoev <igor@sysoev.ru>
parents: 3366
diff changeset
18 ngx_feature_incs="#define AO_REQUIRE_CAS
5d17022a1e88 fix libatomic usage on arm, cris, hppa, m68k, and sparc platforms
Igor Sysoev <igor@sysoev.ru>
parents: 3366
diff changeset
19 #include <atomic_ops.h>"
3363
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 ngx_feature_path=
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 ngx_feature_libs="-latomic_ops"
3366
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
22 ngx_feature_test="long n = 0;
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
23 if (!AO_compare_and_swap(&n, 0, 1))
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
24 return 1;
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
25 if (AO_fetch_and_add(&n, 1) != 1)
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
26 return 1;
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
27 if (n != 2)
b44a7159c5fb atomic operations test-run
Igor Sysoev <igor@sysoev.ru>
parents: 3363
diff changeset
28 return 1;
3363
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 AO_nop();"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 . auto/feature
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32 if [ $ngx_found = yes ]; then
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33 CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34 else
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36 cat << END
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
38 $0: error: libatomic_ops library was not found.
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
39
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40 END
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
41 exit 1
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42 fi
b4aa418af6ef libatomic_ops support
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 fi