Mercurial > hg > nginx-quic
annotate src/http/ngx_http_script.h @ 8519:5f765427c17a
Fixed SSL logging with lingering close.
Recent fixes to SSL shutdown with lingering close (554c6ae25ffc, 1.19.5)
broke logging of SSL variables. To make sure logging of SSL variables
works properly, avoid freeing c->ssl when doing an SSL shutdown before
lingering close.
Reported by Reinis Rozitis
(http://mailman.nginx.org/pipermail/nginx/2021-May/060670.html).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 01 Jun 2021 17:37:51 +0300 |
parents | 3ab8e1e2f0f7 |
children |
rev | line source |
---|---|
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
1 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
2 /* |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
441
diff
changeset
|
3 * Copyright (C) Igor Sysoev |
4412 | 4 * Copyright (C) Nginx, Inc. |
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
5 */ |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
6 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
7 |
99
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_ |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 #define _NGX_HTTP_SCRIPT_H_INCLUDED_ |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
479 | 12 #include <ngx_config.h> |
13 #include <ngx_core.h> | |
14 #include <ngx_http.h> | |
15 | |
16 | |
507 | 17 typedef struct { |
573 | 18 u_char *ip; |
19 u_char *pos; | |
20 ngx_http_variable_value_t *sp; | |
509 | 21 |
573 | 22 ngx_str_t buf; |
23 ngx_str_t line; | |
509 | 24 |
25 /* the start of the rewritten arguments */ | |
573 | 26 u_char *args; |
507 | 27 |
573 | 28 unsigned flushed:1; |
29 unsigned skip:1; | |
30 unsigned quote:1; | |
1891
782af1038115
length calculation did not take into account escaped symbols in arguments
Igor Sysoev <igor@sysoev.ru>
parents:
1565
diff
changeset
|
31 unsigned is_args:1; |
573 | 32 unsigned log:1; |
509 | 33 |
573 | 34 ngx_int_t status; |
35 ngx_http_request_t *request; | |
507 | 36 } ngx_http_script_engine_t; |
37 | |
38 | |
509 | 39 typedef struct { |
573 | 40 ngx_conf_t *cf; |
41 ngx_str_t *source; | |
509 | 42 |
573 | 43 ngx_array_t **flushes; |
44 ngx_array_t **lengths; | |
45 ngx_array_t **values; | |
509 | 46 |
573 | 47 ngx_uint_t variables; |
48 ngx_uint_t ncaptures; | |
641 | 49 ngx_uint_t captures_mask; |
573 | 50 ngx_uint_t size; |
51 | |
52 void *main; | |
507 | 53 |
573 | 54 unsigned compile_args:1; |
55 unsigned complete_lengths:1; | |
56 unsigned complete_values:1; | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
57 unsigned zero:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
58 unsigned conf_prefix:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
59 unsigned root_prefix:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
60 |
641 | 61 unsigned dup_capture:1; |
573 | 62 unsigned args:1; |
509 | 63 } ngx_http_script_compile_t; |
64 | |
65 | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
66 typedef struct { |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
67 ngx_str_t value; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
68 ngx_uint_t *flushes; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
69 void *lengths; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
70 void *values; |
7503
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
71 |
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
72 union { |
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
73 size_t size; |
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
74 } u; |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
75 } ngx_http_complex_value_t; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
76 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
77 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
78 typedef struct { |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
79 ngx_conf_t *cf; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
80 ngx_str_t *value; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
81 ngx_http_complex_value_t *complex_value; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
82 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
83 unsigned zero:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
84 unsigned conf_prefix:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
85 unsigned root_prefix:1; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
86 } ngx_http_compile_complex_value_t; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
87 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
88 |
509 | 89 typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e); |
90 typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e); | |
507 | 91 |
479 | 92 |
507 | 93 typedef struct { |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
94 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
95 uintptr_t len; |
507 | 96 } ngx_http_script_copy_code_t; |
97 | |
98 | |
99 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
100 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
101 uintptr_t index; |
507 | 102 } ngx_http_script_var_code_t; |
103 | |
104 | |
509 | 105 typedef struct { |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
106 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
107 ngx_http_set_variable_pt handler; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
108 uintptr_t data; |
637 | 109 } ngx_http_script_var_handler_code_t; |
110 | |
111 | |
112 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
113 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
114 uintptr_t n; |
509 | 115 } ngx_http_script_copy_capture_code_t; |
116 | |
117 | |
517 | 118 #if (NGX_PCRE) |
119 | |
509 | 120 typedef struct { |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
121 ngx_http_script_code_pt code; |
3325 | 122 ngx_http_regex_t *regex; |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
123 ngx_array_t *lengths; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
124 uintptr_t size; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
125 uintptr_t status; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
126 uintptr_t next; |
509 | 127 |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
128 unsigned test:1; |
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
129 unsigned negative_test:1; |
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
130 unsigned uri:1; |
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
131 unsigned args:1; |
509 | 132 |
133 /* add the r->args to the new arguments */ | |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
134 unsigned add_args:1; |
577 | 135 |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
136 unsigned redirect:1; |
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
137 unsigned break_cycle:1; |
509 | 138 |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
139 ngx_str_t name; |
509 | 140 } ngx_http_script_regex_code_t; |
141 | |
142 | |
143 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
144 ngx_http_script_code_pt code; |
509 | 145 |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
146 unsigned uri:1; |
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
147 unsigned args:1; |
509 | 148 |
149 /* add the r->args to the new arguments */ | |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
150 unsigned add_args:1; |
509 | 151 |
6861
e4590dfd97ff
Win32: support 64-bit compilation with MSVC.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4412
diff
changeset
|
152 unsigned redirect:1; |
509 | 153 } ngx_http_script_regex_end_code_t; |
507 | 154 |
517 | 155 #endif |
156 | |
507 | 157 |
509 | 158 typedef struct { |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
159 ngx_http_script_code_pt code; |
2758 | 160 uintptr_t conf_prefix; |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
161 } ngx_http_script_full_name_code_t; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
162 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
163 |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
164 typedef struct { |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
165 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
166 uintptr_t status; |
3633 | 167 ngx_http_complex_value_t text; |
509 | 168 } ngx_http_script_return_code_t; |
169 | |
170 | |
631 | 171 typedef enum { |
172 ngx_http_script_file_plain = 0, | |
669 | 173 ngx_http_script_file_not_plain, |
174 ngx_http_script_file_dir, | |
175 ngx_http_script_file_not_dir, | |
176 ngx_http_script_file_exists, | |
177 ngx_http_script_file_not_exists, | |
178 ngx_http_script_file_exec, | |
179 ngx_http_script_file_not_exec | |
631 | 180 } ngx_http_script_file_op_e; |
181 | |
182 | |
183 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
184 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
185 uintptr_t op; |
631 | 186 } ngx_http_script_file_code_t; |
187 | |
188 | |
509 | 189 typedef struct { |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
190 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
191 uintptr_t next; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
192 void **loc_conf; |
509 | 193 } ngx_http_script_if_code_t; |
194 | |
195 | |
196 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
197 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
198 ngx_array_t *lengths; |
515 | 199 } ngx_http_script_complex_value_code_t; |
200 | |
201 | |
202 typedef struct { | |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
203 ngx_http_script_code_pt code; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
204 uintptr_t value; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
205 uintptr_t text_len; |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
206 uintptr_t text_data; |
509 | 207 } ngx_http_script_value_code_t; |
208 | |
507 | 209 |
2609
ad99a49cd313
rename ngx_http_scrip_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2587
diff
changeset
|
210 void ngx_http_script_flush_complex_value(ngx_http_request_t *r, |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
211 ngx_http_complex_value_t *val); |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
212 ngx_int_t ngx_http_complex_value(ngx_http_request_t *r, |
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
213 ngx_http_complex_value_t *val, ngx_str_t *value); |
7503
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
214 size_t ngx_http_complex_value_size(ngx_http_request_t *r, |
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
215 ngx_http_complex_value_t *val, size_t default_value); |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
216 ngx_int_t ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv); |
3761 | 217 char *ngx_http_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
3756
7224d008faaf
new ngx_http_secure_link_module with secure_link, secure_link_md5, and
Igor Sysoev <igor@sysoev.ru>
parents:
3691
diff
changeset
|
218 void *conf); |
8454
3ab8e1e2f0f7
Upstream: variables support in certificates.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7503
diff
changeset
|
219 char *ngx_http_set_complex_value_zero_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
3ab8e1e2f0f7
Upstream: variables support in certificates.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7503
diff
changeset
|
220 void *conf); |
7503
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
221 char *ngx_http_set_complex_value_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
b82162b8496a
Added ngx_http_set_complex_value_size_slot().
Ruslan Ermilov <ru@nginx.com>
parents:
7439
diff
changeset
|
222 void *conf); |
3756
7224d008faaf
new ngx_http_secure_link_module with secure_link, secure_link_md5, and
Igor Sysoev <igor@sysoev.ru>
parents:
3691
diff
changeset
|
223 |
2587
8afc4df77ee8
ngx_http_script_flush_complex_value()
Igor Sysoev <igor@sysoev.ru>
parents:
2547
diff
changeset
|
224 |
3691
55f95e91daed
ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents:
3633
diff
changeset
|
225 ngx_int_t ngx_http_test_predicates(ngx_http_request_t *r, |
55f95e91daed
ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents:
3633
diff
changeset
|
226 ngx_array_t *predicates); |
7439
5efc23d83bc2
Added the ngx_http_test_required_predicates() function.
Vladimir Homutov <vl@nginx.com>
parents:
6861
diff
changeset
|
227 ngx_int_t ngx_http_test_required_predicates(ngx_http_request_t *r, |
5efc23d83bc2
Added the ngx_http_test_required_predicates() function.
Vladimir Homutov <vl@nginx.com>
parents:
6861
diff
changeset
|
228 ngx_array_t *predicates); |
3691
55f95e91daed
ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents:
3633
diff
changeset
|
229 char *ngx_http_set_predicate_slot(ngx_conf_t *cf, ngx_command_t *cmd, |
55f95e91daed
ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents:
3633
diff
changeset
|
230 void *conf); |
55f95e91daed
ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents:
3633
diff
changeset
|
231 |
509 | 232 ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value); |
233 ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc); | |
623 | 234 u_char *ngx_http_script_run(ngx_http_request_t *r, ngx_str_t *value, |
235 void *code_lengths, size_t reserved, void *code_values); | |
1565 | 236 void ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r, |
573 | 237 ngx_array_t *indices); |
509 | 238 |
239 void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes, | |
240 size_t size); | |
241 void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code); | |
507 | 242 |
509 | 243 size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e); |
244 void ngx_http_script_copy_code(ngx_http_script_engine_t *e); | |
245 size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e); | |
246 void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e); | |
247 size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e); | |
248 void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e); | |
1891
782af1038115
length calculation did not take into account escaped symbols in arguments
Igor Sysoev <igor@sysoev.ru>
parents:
1565
diff
changeset
|
249 size_t ngx_http_script_mark_args_code(ngx_http_script_engine_t *e); |
517 | 250 void ngx_http_script_start_args_code(ngx_http_script_engine_t *e); |
251 #if (NGX_PCRE) | |
509 | 252 void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e); |
253 void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e); | |
517 | 254 #endif |
509 | 255 void ngx_http_script_return_code(ngx_http_script_engine_t *e); |
527 | 256 void ngx_http_script_break_code(ngx_http_script_engine_t *e); |
509 | 257 void ngx_http_script_if_code(ngx_http_script_engine_t *e); |
577 | 258 void ngx_http_script_equal_code(ngx_http_script_engine_t *e); |
259 void ngx_http_script_not_equal_code(ngx_http_script_engine_t *e); | |
631 | 260 void ngx_http_script_file_code(ngx_http_script_engine_t *e); |
515 | 261 void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e); |
509 | 262 void ngx_http_script_value_code(ngx_http_script_engine_t *e); |
263 void ngx_http_script_set_var_code(ngx_http_script_engine_t *e); | |
637 | 264 void ngx_http_script_var_set_handler_code(ngx_http_script_engine_t *e); |
509 | 265 void ngx_http_script_var_code(ngx_http_script_engine_t *e); |
266 void ngx_http_script_nop_code(ngx_http_script_engine_t *e); | |
99
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
267 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
268 |
a059e1aa65d4
nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
269 #endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */ |