Mercurial > hg > nginx
annotate src/core/ngx_regex.h @ 9270:3d455e37abf8 default tip
Core: PID file writing synchronization.
Now, ngx_daemon() does not call exit() in the parent process immediately,
but instead waits for the child process to signal it actually started (and
wrote the PID file if configured to). This ensures that the PID file
already exists when the parent process exits.
To make sure that signal handlers won't cause unexpected logging in the
parent process if the child process dies (for example, due to errors when
writing the PID file), ngx_init_signals() is moved to the child process.
This resolves "PID file ... not readable (yet?) after start" and "Failed
to parse PID from file..." errors as observed with systemd.
Note that the errors observed are considered to be a bug in systemd, which
isn't able to work properly with traditional Unix daemons. Still, the
workaround is implemented to make sure there will be no OS vendor patches
trying to address this.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 13 May 2024 06:13:22 +0300 |
parents | d07456044b61 |
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:
216
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:
216
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:
216
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:
216
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:
216
diff
changeset
|
7 |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #ifndef _NGX_REGEX_H_INCLUDED_ |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 #define _NGX_REGEX_H_INCLUDED_ |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
12 #include <ngx_config.h> |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
13 #include <ngx_core.h> |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
14 |
7981 | 15 |
16 #if (NGX_PCRE2) | |
17 | |
18 #define PCRE2_CODE_UNIT_WIDTH 8 | |
19 #include <pcre2.h> | |
20 | |
21 #define NGX_REGEX_NO_MATCHED PCRE2_ERROR_NOMATCH /* -1 */ | |
22 | |
23 typedef pcre2_code ngx_regex_t; | |
24 | |
25 #else | |
26 | |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
27 #include <pcre.h> |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
28 |
7981 | 29 #define NGX_REGEX_NO_MATCHED PCRE_ERROR_NOMATCH /* -1 */ |
4388
005fc2d5e84f
Added support for regex study and PCRE JIT (ticket #41) optimizations on
Valentin Bartenev <vbart@nginx.com>
parents:
3325
diff
changeset
|
30 |
005fc2d5e84f
Added support for regex study and PCRE JIT (ticket #41) optimizations on
Valentin Bartenev <vbart@nginx.com>
parents:
3325
diff
changeset
|
31 typedef struct { |
4638
6e1a48bcf915
Fixed the ngx_regex.h header file compatibility with C++.
Valentin Bartenev <vbart@nginx.com>
parents:
4412
diff
changeset
|
32 pcre *code; |
4388
005fc2d5e84f
Added support for regex study and PCRE JIT (ticket #41) optimizations on
Valentin Bartenev <vbart@nginx.com>
parents:
3325
diff
changeset
|
33 pcre_extra *extra; |
005fc2d5e84f
Added support for regex study and PCRE JIT (ticket #41) optimizations on
Valentin Bartenev <vbart@nginx.com>
parents:
3325
diff
changeset
|
34 } ngx_regex_t; |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
35 |
7981 | 36 #endif |
37 | |
3325 | 38 |
7982
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
39 #define NGX_REGEX_CASELESS 0x00000001 |
7983
d07456044b61
Core: added NGX_REGEX_MULTILINE for 3rd party modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7982
diff
changeset
|
40 #define NGX_REGEX_MULTILINE 0x00000002 |
7982
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
41 |
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
42 |
1784 | 43 typedef struct { |
3325 | 44 ngx_str_t pattern; |
45 ngx_pool_t *pool; | |
7982
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
46 ngx_uint_t options; |
3325 | 47 |
48 ngx_regex_t *regex; | |
49 int captures; | |
50 int named_captures; | |
51 int name_size; | |
52 u_char *names; | |
53 ngx_str_t err; | |
54 } ngx_regex_compile_t; | |
55 | |
56 | |
57 typedef struct { | |
58 ngx_regex_t *regex; | |
59 u_char *name; | |
1784 | 60 } ngx_regex_elt_t; |
61 | |
62 | |
499 | 63 void ngx_regex_init(void); |
3325 | 64 ngx_int_t ngx_regex_compile(ngx_regex_compile_t *rc); |
3319
be47fe127f8c
ngx_regex_exec() calling optimiztion:
Igor Sysoev <igor@sysoev.ru>
parents:
1784
diff
changeset
|
65 |
7981 | 66 ngx_int_t ngx_regex_exec(ngx_regex_t *re, ngx_str_t *s, int *captures, |
67 ngx_uint_t size); | |
7982
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
68 |
fbbb5ce52995
PCRE2 and PCRE binary compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7981
diff
changeset
|
69 #if (NGX_PCRE2) |
7981 | 70 #define ngx_regex_exec_n "pcre2_match()" |
71 #else | |
72 #define ngx_regex_exec_n "pcre_exec()" | |
73 #endif | |
3319
be47fe127f8c
ngx_regex_exec() calling optimiztion:
Igor Sysoev <igor@sysoev.ru>
parents:
1784
diff
changeset
|
74 |
1784 | 75 ngx_int_t ngx_regex_exec_array(ngx_array_t *a, ngx_str_t *s, ngx_log_t *log); |
76 | |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
77 |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
78 #endif /* _NGX_REGEX_H_INCLUDED_ */ |