annotate auto/lib/google-perftools/conf @ 7525:575480d3fd01

Perl: propagate errors. When an error happens, the ctx->error bit is now set, and croak() is called to terminate further processing. The ctx->error bit is checked in ngx_http_perl_call_handler() to cancel further processing, and is also checked in various output functions - to make sure these won't be called if croak() was handled by an eval{} in perl code. In particular, this ensures that output chain won't be called after errors, as filters might not expect this to happen. This fixes some segmentation faults under low memory conditions. Also this stops request processing after filter finalization or request body reading errors. For cases where an HTTP error status can be additionally returned (for example, 416 (Requested Range Not Satisfiable) from the range filter), the ctx->status field is also added.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 12 Jul 2019 13:56:21 +0300
parents f7e79596baf2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1949
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 2893
diff changeset
3 # Copyright (C) Nginx, Inc.
1949
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 ngx_feature="Google perftools"
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 ngx_feature_name=
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 ngx_feature_run=no
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 ngx_feature_incs=
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 ngx_feature_path=
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 ngx_feature_libs="-lprofiler"
7327
f7e79596baf2 Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents: 5678
diff changeset
12 ngx_feature_test="void ProfilerStop(void);
f7e79596baf2 Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents: 5678
diff changeset
13 ProfilerStop()"
1949
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 . auto/feature
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17 if [ $ngx_found = no ]; then
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 # FreeBSD port
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 ngx_feature="Google perftools in /usr/local/"
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23 if [ $NGX_RPATH = YES ]; then
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24 ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lprofiler"
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25 else
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26 ngx_feature_libs="-L/usr/local/lib -lprofiler"
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27 fi
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 . auto/feature
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 fi
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32
4704
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
33 if [ $ngx_found = no ]; then
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
34
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
35 # MacPorts
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
36
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
37 ngx_feature="Google perftools in /opt/local/"
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
38
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
39 if [ $NGX_RPATH = YES ]; then
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
40 ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lprofiler"
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
41 else
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
42 ngx_feature_libs="-L/opt/local/lib -lprofiler"
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
43 fi
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
44
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
45 . auto/feature
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
46 fi
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
47
642755ee3fab Added code to look up Google perftools in /opt/local/, for MacPorts.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
48
1949
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 if [ $ngx_found = yes ]; then
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
2893
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
51
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
52 else
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
53
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
54 cat << END
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
55
5678
0e1491139947 Configure: typo fixed.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4704
diff changeset
56 $0: error: the Google perftools module requires the Google perftools
2893
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
57 library. You can either do not enable the module or install the library.
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
58
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
59 END
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
60
da1ba8a5c8c9 stop ./configure at once on library failure
Igor Sysoev <igor@sysoev.ru>
parents: 1949
diff changeset
61 exit 1
1949
e5ce4e2de846 ngx_google_perftools_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
62 fi