annotate src/core/ngx_cycle.c @ 9299:2706b60dc225 default tip

Core: error logging rate limiting. With this change, error logging to files can be rate-limited with the "rate=" parameter. The parameter specifies allowed log messages rate to a particular file (per worker), in messages per second (m/s). By default, "rate=1000m/s" is used. Rate limiting is implemented using the "leaky bucket" method, similarly to the limit_req module. Maximum burst size is set to the number of log messages per second for each severity level, so "error" messages are logged even if the rate limit is hit by "info" messages (but not vice versa). When the limit is reached for a particular level, the "too many log messages, limiting" message is logged at this level. If debug logging is enabled, either for the particular log file or for the particular connection, rate limiting is not used.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 25 Jun 2024 22:58:56 +0300
parents 4eb02e5ddb48
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: 440
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: 440
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
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4309
diff changeset
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: 440
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: 440
diff changeset
6
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_core.h>
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_event.h>
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
13 static void ngx_destroy_cycle_pools(ngx_conf_t *conf);
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
14 static ngx_int_t ngx_init_zone_pool(ngx_cycle_t *cycle,
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
15 ngx_shm_zone_t *shm_zone);
9269
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
16 static ngx_int_t ngx_pidfile_changed(ngx_str_t *name1, ngx_str_t *name2,
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
17 ngx_log_t *log);
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
18 static ngx_int_t ngx_test_lockfile(u_char *file, ngx_log_t *log);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 static void ngx_clean_old_cycles(ngx_event_t *ev);
6930
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
20 static void ngx_shutdown_timer_handler(ngx_event_t *ev);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23 volatile ngx_cycle_t *ngx_cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24 ngx_array_t ngx_old_cycles;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26 static ngx_pool_t *ngx_temp_pool;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27 static ngx_event_t ngx_cleaner_event;
6930
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
28 static ngx_event_t ngx_shutdown_event;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29
318
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
30 ngx_uint_t ngx_test_config;
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
31 ngx_uint_t ngx_dump_config;
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3658
diff changeset
32 ngx_uint_t ngx_quiet_mode;
318
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
33
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35 /* STUB NAME */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36 static ngx_connection_t dumb;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37 /* STUB */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
38
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
39
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
40 ngx_cycle_t *
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
41 ngx_init_cycle(ngx_cycle_t *old_cycle)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42 {
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
43 void *rv;
6821
30b6f1ff192b Perl: removed special environment handling for the perl module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6776
diff changeset
44 char **senv;
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
45 ngx_uint_t i, n;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
46 ngx_log_t *log;
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
47 ngx_time_t *tp;
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
48 ngx_conf_t conf;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
49 ngx_pool_t *pool;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
50 ngx_cycle_t *cycle, **old;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
51 ngx_shm_zone_t *shm_zone, *oshm_zone;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
52 ngx_list_part_t *part, *opart;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
53 ngx_open_file_t *file;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
54 ngx_listening_t *ls, *nls;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
55 ngx_core_conf_t *ccf, *old_ccf;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
56 ngx_core_module_t *module;
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
57 char hostname[NGX_MAXHOSTNAMELEN];
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
59 ngx_timezone_update();
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
60
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
61 /* force localtime update with a new timezone */
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
62
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
63 tp = ngx_timeofday();
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
64 tp->sec = 0;
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
65
3475
ab353d7dc182 *) introduce ngx_time_sigsafe_update() to update the error log time only
Igor Sysoev <igor@sysoev.ru>
parents: 3474
diff changeset
66 ngx_time_update();
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
67
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
68
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69 log = old_cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
70
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
71 pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
72 if (pool == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
73 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
74 }
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
75 pool->log = log;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
76
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
77 cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
78 if (cycle == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
79 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
80 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
81 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
82
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 cycle->pool = pool;
316
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
84 cycle->log = log;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85 cycle->old_cycle = old_cycle;
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
86
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
87 cycle->conf_prefix.len = old_cycle->conf_prefix.len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
88 cycle->conf_prefix.data = ngx_pstrdup(pool, &old_cycle->conf_prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
89 if (cycle->conf_prefix.data == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
90 ngx_destroy_pool(pool);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
91 return NULL;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
92 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
93
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
94 cycle->prefix.len = old_cycle->prefix.len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
95 cycle->prefix.data = ngx_pstrdup(pool, &old_cycle->prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
96 if (cycle->prefix.data == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
97 ngx_destroy_pool(pool);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
98 return NULL;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
99 }
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
100
7744
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
101 cycle->error_log.len = old_cycle->error_log.len;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
102 cycle->error_log.data = ngx_pnalloc(pool, old_cycle->error_log.len + 1);
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
103 if (cycle->error_log.data == NULL) {
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
104 ngx_destroy_pool(pool);
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
105 return NULL;
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
106 }
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
107 ngx_cpystrn(cycle->error_log.data, old_cycle->error_log.data,
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
108 old_cycle->error_log.len + 1);
f18db38a9826 Core: "-e" command line option.
Igor Ippolitov <iippolitov@nginx.com>
parents: 7685
diff changeset
109
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
110 cycle->conf_file.len = old_cycle->conf_file.len;
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
111 cycle->conf_file.data = ngx_pnalloc(pool, old_cycle->conf_file.len + 1);
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
112 if (cycle->conf_file.data == NULL) {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
113 ngx_destroy_pool(pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
114 return NULL;
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
115 }
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
116 ngx_cpystrn(cycle->conf_file.data, old_cycle->conf_file.data,
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
117 old_cycle->conf_file.len + 1);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
118
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
119 cycle->conf_param.len = old_cycle->conf_param.len;
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
120 cycle->conf_param.data = ngx_pstrdup(pool, &old_cycle->conf_param);
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
121 if (cycle->conf_param.data == NULL) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
122 ngx_destroy_pool(pool);
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
123 return NULL;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
124 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
125
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
126
4870
8a9b7b4e9f2d Correct plural form for "path" in the whole source base.
Andrey Belov <defan@nginx.com>
parents: 4869
diff changeset
127 n = old_cycle->paths.nelts ? old_cycle->paths.nelts : 10;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
128
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
129 if (ngx_array_init(&cycle->paths, pool, n, sizeof(ngx_path_t *))
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
130 != NGX_OK)
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
131 {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
135
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
136 ngx_memzero(cycle->paths.elts, n * sizeof(ngx_path_t *));
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138
6187
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
139 if (ngx_array_init(&cycle->config_dump, pool, 1, sizeof(ngx_conf_dump_t))
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
140 != NGX_OK)
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
141 {
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
142 ngx_destroy_pool(pool);
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
143 return NULL;
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
144 }
1b7e246e6b38 Core: store and dump processed configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6153
diff changeset
145
6776
1bf4f21b1b72 Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6483
diff changeset
146 ngx_rbtree_init(&cycle->config_dump_rbtree, &cycle->config_dump_sentinel,
1bf4f21b1b72 Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6483
diff changeset
147 ngx_str_rbtree_insert_value);
1bf4f21b1b72 Core: show file contents only once while dumping configuration.
Vladimir Homutov <vl@nginx.com>
parents: 6483
diff changeset
148
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
149 if (old_cycle->open_files.part.nelts) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
150 n = old_cycle->open_files.part.nelts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
151 for (part = old_cycle->open_files.part.next; part; part = part->next) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
152 n += part->nelts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
153 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
154
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
155 } else {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
156 n = 20;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
157 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
158
416
b9bd635011de nginx-0.0.10-2004-09-06-22:45:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
159 if (ngx_list_init(&cycle->open_files, pool, n, sizeof(ngx_open_file_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
160 != NGX_OK)
415
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
161 {
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
162 ngx_destroy_pool(pool);
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
163 return NULL;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
164 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
165
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
166
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
167 if (old_cycle->shared_memory.part.nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
168 n = old_cycle->shared_memory.part.nelts;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
169 for (part = old_cycle->shared_memory.part.next; part; part = part->next)
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
170 {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
171 n += part->nelts;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
172 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
173
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
174 } else {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
175 n = 1;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
176 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
177
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
178 if (ngx_list_init(&cycle->shared_memory, pool, n, sizeof(ngx_shm_zone_t))
2536
a6d6d762c554 small optimization: " == NGX_ERROR" > " != NGX_OK"
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
179 != NGX_OK)
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
180 {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
181 ngx_destroy_pool(pool);
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
182 return NULL;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
183 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
184
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
185 n = old_cycle->listening.nelts ? old_cycle->listening.nelts : 10;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
186
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
187 if (ngx_array_init(&cycle->listening, pool, n, sizeof(ngx_listening_t))
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
188 != NGX_OK)
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
189 {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
190 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
191 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
192 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
193
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
194 ngx_memzero(cycle->listening.elts, n * sizeof(ngx_listening_t));
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
195
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
196
3880
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
197 ngx_queue_init(&cycle->reusable_connections_queue);
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
198
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
199
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
200 cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
201 if (cycle->conf_ctx == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
202 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
203 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
204 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
205
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
206
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
207 if (gethostname(hostname, NGX_MAXHOSTNAMELEN) == -1) {
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
208 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "gethostname() failed");
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
209 ngx_destroy_pool(pool);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
210 return NULL;
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
211 }
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
212
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
213 /* on Linux gethostname() silently truncates name that does not fit */
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
214
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
215 hostname[NGX_MAXHOSTNAMELEN - 1] = '\0';
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
216 cycle->hostname.len = ngx_strlen(hostname);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
217
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
218 cycle->hostname.data = ngx_pnalloc(pool, cycle->hostname.len);
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
219 if (cycle->hostname.data == NULL) {
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
220 ngx_destroy_pool(pool);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
221 return NULL;
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
222 }
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
223
3222
a4f264c43173 use lowcase only hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3142
diff changeset
224 ngx_strlow(cycle->hostname.data, (u_char *) hostname, cycle->hostname.len);
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
225
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
226
6383
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6379
diff changeset
227 if (ngx_cycle_modules(cycle) != NGX_OK) {
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6379
diff changeset
228 ngx_destroy_pool(pool);
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6379
diff changeset
229 return NULL;
85dea406e18f Dynamic modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6379
diff changeset
230 }
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
231
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
232
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
233 for (i = 0; cycle->modules[i]; i++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
234 if (cycle->modules[i]->type != NGX_CORE_MODULE) {
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
235 continue;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
236 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
237
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
238 module = cycle->modules[i]->ctx;
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
239
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
240 if (module->create_conf) {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
241 rv = module->create_conf(cycle);
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2905
diff changeset
242 if (rv == NULL) {
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
243 ngx_destroy_pool(pool);
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
244 return NULL;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
245 }
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
246 cycle->conf_ctx[cycle->modules[i]->index] = rv;
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
247 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
248 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
249
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
250
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
251 senv = environ;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
252
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
253
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
254 ngx_memzero(&conf, sizeof(ngx_conf_t));
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
255 /* STUB: init array ? */
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
256 conf.args = ngx_array_create(pool, 10, sizeof(ngx_str_t));
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 if (conf.args == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
258 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
259 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
260 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
261
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
262 conf.temp_pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
263 if (conf.temp_pool == NULL) {
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
264 ngx_destroy_pool(pool);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
265 return NULL;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
266 }
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
267
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
268
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
269 conf.ctx = cycle->conf_ctx;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
270 conf.cycle = cycle;
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
271 conf.pool = pool;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
272 conf.log = log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
273 conf.module_type = NGX_CORE_MODULE;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
274 conf.cmd_type = NGX_MAIN_CONF;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
275
728
e82eed614d4a turn off startup debug logging introduced by previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 727
diff changeset
276 #if 0
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
277 log->log_level = NGX_LOG_DEBUG_ALL;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
278 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
279
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
280 if (ngx_conf_param(&conf) != NGX_CONF_OK) {
3142
959fa3a11b03 restore environ, this fixes segfault on reconfiguration failure when
Igor Sysoev <igor@sysoev.ru>
parents: 3141
diff changeset
281 environ = senv;
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
282 ngx_destroy_cycle_pools(&conf);
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
283 return NULL;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
284 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
285
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
286 if (ngx_conf_parse(&conf, &cycle->conf_file) != NGX_CONF_OK) {
3142
959fa3a11b03 restore environ, this fixes segfault on reconfiguration failure when
Igor Sysoev <igor@sysoev.ru>
parents: 3141
diff changeset
287 environ = senv;
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
288 ngx_destroy_cycle_pools(&conf);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
289 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
290 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
291
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3658
diff changeset
292 if (ngx_test_config && !ngx_quiet_mode) {
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
293 ngx_log_stderr(0, "the configuration file %s syntax is ok",
2722
ffa8e2451457 show -t results on stderr
Igor Sysoev <igor@sysoev.ru>
parents: 2720
diff changeset
294 cycle->conf_file.data);
320
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
295 }
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
296
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
297 for (i = 0; cycle->modules[i]; i++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
298 if (cycle->modules[i]->type != NGX_CORE_MODULE) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
299 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
300 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
301
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
302 module = cycle->modules[i]->ctx;
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
303
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
304 if (module->init_conf) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
305 if (module->init_conf(cycle,
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
306 cycle->conf_ctx[cycle->modules[i]->index])
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
307 == NGX_CONF_ERROR)
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
308 {
3142
959fa3a11b03 restore environ, this fixes segfault on reconfiguration failure when
Igor Sysoev <igor@sysoev.ru>
parents: 3141
diff changeset
309 environ = senv;
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
310 ngx_destroy_cycle_pools(&conf);
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
311 return NULL;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
312 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
313 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
314 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
315
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
316 if (ngx_process == NGX_PROCESS_SIGNALLER) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
317 return cycle;
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
318 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
319
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
320 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
321
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
322 if (ngx_test_config) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
323
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
324 if (ngx_create_pidfile(&ccf->pid, log) != NGX_OK) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
325 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
326 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
327
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
328 } else if (!ngx_is_init_cycle(old_cycle)) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
329
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
330 /*
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
331 * we do not create the pid file in the first ngx_init_cycle() call
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
332 * because we need to write the demonized process pid
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
333 */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
334
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
335 old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
336 ngx_core_module);
9269
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
337
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
338 if (ngx_pidfile_changed(&ccf->pid, &old_ccf->pid, log)) {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
339
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
340 /* new pid file name */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
341
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
342 if (ngx_create_pidfile(&ccf->pid, log) != NGX_OK) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
343 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
344 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
345
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
346 ngx_delete_pidfile(old_cycle);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
347 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
348 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
349
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
350
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
351 if (ngx_test_lockfile(cycle->lock_file.data, log) != NGX_OK) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
352 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
353 }
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
354
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
355
4870
8a9b7b4e9f2d Correct plural form for "path" in the whole source base.
Andrey Belov <defan@nginx.com>
parents: 4869
diff changeset
356 if (ngx_create_paths(cycle, ccf->user) != NGX_OK) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
357 goto failed;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
358 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
359
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
360
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
361 if (ngx_log_open_default(cycle) != NGX_OK) {
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
362 goto failed;
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
363 }
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
364
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
365 /* open the new files */
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
366
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
367 part = &cycle->open_files.part;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
368 file = part->elts;
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
369
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
370 for (i = 0; /* void */ ; i++) {
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
371
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
372 if (i >= part->nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
373 if (part->next == NULL) {
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
374 break;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
375 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
376 part = part->next;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
377 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
378 i = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
379 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
380
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
381 if (file[i].name.len == 0) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
382 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
383 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
384
2628
64a10d6b97bd win32 ngx_open_file() supports utf8 names and NGX_FILE_APPEND
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
385 file[i].fd = ngx_open_file(file[i].name.data,
2629
367b29612a00 Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set
Igor Sysoev <igor@sysoev.ru>
parents: 2628
diff changeset
386 NGX_FILE_APPEND,
2628
64a10d6b97bd win32 ngx_open_file() supports utf8 names and NGX_FILE_APPEND
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
387 NGX_FILE_CREATE_OR_OPEN,
1048
c4f666fc3a7e ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents: 1032
diff changeset
388 NGX_FILE_DEFAULT_ACCESS);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
389
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
390 ngx_log_debug3(NGX_LOG_DEBUG_CORE, log, 0,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
391 "log: %p %d \"%s\"",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
392 &file[i], file[i].fd, file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
393
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
394 if (file[i].fd == NGX_INVALID_FILE) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
395 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
396 ngx_open_file_n " \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
397 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
398 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
399 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
400
2687
5190c5dc3486 delete win32 ngx_file_append_mode() as we use reliable
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
401 #if !(NGX_WIN32)
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
402 if (fcntl(file[i].fd, F_SETFD, FD_CLOEXEC) == -1) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
403 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
404 "fcntl(FD_CLOEXEC) \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
405 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
406 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
407 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
408 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
409 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
410
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
411 cycle->log = &cycle->new_log;
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
412 pool->log = &cycle->new_log;
2466
550ab350c306 revert the previous commit and r2447 change in src/core/ngx_cycle.c
Igor Sysoev <igor@sysoev.ru>
parents: 2465
diff changeset
413
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
414
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
415 /* create shared memory */
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
416
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
417 part = &cycle->shared_memory.part;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
418 shm_zone = part->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
419
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
420 for (i = 0; /* void */ ; i++) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
421
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
422 if (i >= part->nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
423 if (part->next == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
424 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
425 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
426 part = part->next;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
427 shm_zone = part->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
428 i = 0;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
429 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
430
979
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
431 if (shm_zone[i].shm.size == 0) {
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
432 ngx_log_error(NGX_LOG_EMERG, log, 0,
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
433 "zero size shared memory zone \"%V\"",
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
434 &shm_zone[i].shm.name);
979
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
435 goto failed;
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
436 }
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
437
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
438 shm_zone[i].shm.log = cycle->log;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
439
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
440 opart = &old_cycle->shared_memory.part;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
441 oshm_zone = opart->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
442
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
443 for (n = 0; /* void */ ; n++) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
444
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
445 if (n >= opart->nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
446 if (opart->next == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
447 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
448 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
449 opart = opart->next;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
450 oshm_zone = opart->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
451 n = 0;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
452 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
453
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
454 if (shm_zone[i].shm.name.len != oshm_zone[n].shm.name.len) {
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
455 continue;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
456 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
457
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
458 if (ngx_strncmp(shm_zone[i].shm.name.data,
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
459 oshm_zone[n].shm.name.data,
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
460 shm_zone[i].shm.name.len)
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
461 != 0)
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
462 {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
463 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
464 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
465
4933
72e11139760b Core: don't reuse shared memory zone that changed ownership (ticket #210).
Ruslan Ermilov <ru@nginx.com>
parents: 4870
diff changeset
466 if (shm_zone[i].tag == oshm_zone[n].tag
6103
79ddb0bdb273 Upstream: the "zone" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 6016
diff changeset
467 && shm_zone[i].shm.size == oshm_zone[n].shm.size
79ddb0bdb273 Upstream: the "zone" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 6016
diff changeset
468 && !shm_zone[i].noreuse)
4933
72e11139760b Core: don't reuse shared memory zone that changed ownership (ticket #210).
Ruslan Ermilov <ru@nginx.com>
parents: 4870
diff changeset
469 {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
470 shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
6132
859ce1c41f64 Win32: fixed shm.handle loss on reload.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6116
diff changeset
471 #if (NGX_WIN32)
859ce1c41f64 Win32: fixed shm.handle loss on reload.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6116
diff changeset
472 shm_zone[i].shm.handle = oshm_zone[n].shm.handle;
859ce1c41f64 Win32: fixed shm.handle loss on reload.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6116
diff changeset
473 #endif
993
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
474
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
475 if (shm_zone[i].init(&shm_zone[i], oshm_zone[n].data)
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
476 != NGX_OK)
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
477 {
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
478 goto failed;
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
479 }
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
480
996
7fdcb5b9f063 fix label name
Igor Sysoev <igor@sysoev.ru>
parents: 995
diff changeset
481 goto shm_zone_found;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
482 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
483
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
484 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
485 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
486
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
487 if (ngx_shm_alloc(&shm_zone[i].shm) != NGX_OK) {
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
488 goto failed;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
489 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
490
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
491 if (ngx_init_zone_pool(cycle, &shm_zone[i]) != NGX_OK) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
492 goto failed;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
493 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
494
993
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
495 if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
496 goto failed;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
497 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
498
996
7fdcb5b9f063 fix label name
Igor Sysoev <igor@sysoev.ru>
parents: 995
diff changeset
499 shm_zone_found:
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
500
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
501 continue;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
502 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
503
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
504
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
505 /* handle the listening sockets */
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
506
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
507 if (old_cycle->listening.nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
508 ls = old_cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
509 for (i = 0; i < old_cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
510 ls[i].remain = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
511 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
512
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
513 nls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
514 for (n = 0; n < cycle->listening.nelts; n++) {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
515
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
516 for (i = 0; i < old_cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
517 if (ls[i].ignore) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
518 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
519 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
520
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
521 if (ls[i].remain) {
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
522 continue;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
523 }
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
524
6462
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
525 if (ls[i].type != nls[n].type) {
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
526 continue;
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
527 }
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
528
5473
d39ef821d03e Core: externalized ngx_cmp_sockaddr().
Ruslan Ermilov <ru@nginx.com>
parents: 5430
diff changeset
529 if (ngx_cmp_sockaddr(nls[n].sockaddr, nls[n].socklen,
5603
b2b5b1b74129 Core: fixed wrong indices in listening sockets compare loops.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5473
diff changeset
530 ls[i].sockaddr, ls[i].socklen, 1)
5473
d39ef821d03e Core: externalized ngx_cmp_sockaddr().
Ruslan Ermilov <ru@nginx.com>
parents: 5430
diff changeset
531 == NGX_OK)
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
532 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
533 nls[n].fd = ls[i].fd;
7662
9c038f5e0464 Fixed removing of listening UNIX sockets when "changing binary".
Ruslan Ermilov <ru@nginx.com>
parents: 7394
diff changeset
534 nls[n].inherited = ls[i].inherited;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
535 nls[n].previous = &ls[i];
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
536 ls[i].remain = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
537
5603
b2b5b1b74129 Core: fixed wrong indices in listening sockets compare loops.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5473
diff changeset
538 if (ls[i].backlog != nls[n].backlog) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
539 nls[n].listen = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
540 }
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 525
diff changeset
541
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
542 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
543
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
544 /*
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
545 * FreeBSD, except the most recent versions,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
546 * could not remove accept filter
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
547 */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
548 nls[n].deferred_accept = ls[i].deferred_accept;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
549
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
550 if (ls[i].accept_filter && nls[n].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
551 if (ngx_strcmp(ls[i].accept_filter,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
552 nls[n].accept_filter)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
553 != 0)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
554 {
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
555 nls[n].delete_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
556 nls[n].add_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
557 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
558
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
559 } else if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
560 nls[n].delete_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
561
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
562 } else if (nls[n].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
563 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
564 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
565 #endif
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
566
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
567 #if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
568
5603
b2b5b1b74129 Core: fixed wrong indices in listening sockets compare loops.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5473
diff changeset
569 if (ls[i].deferred_accept && !nls[n].deferred_accept) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
570 nls[n].delete_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
571
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
572 } else if (ls[i].deferred_accept != nls[n].deferred_accept)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
573 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
574 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
575 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
576 #endif
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
577
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
578 #if (NGX_HAVE_REUSEPORT)
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
579 if (nls[n].reuseport && !ls[i].reuseport) {
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
580 nls[n].add_reuseport = 1;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
581 }
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
582 #endif
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
583
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
584 break;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
585 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
586 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
587
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
588 if (nls[n].fd == (ngx_socket_t) -1) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
589 nls[n].open = 1;
5430
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
590 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
591 if (nls[n].accept_filter) {
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
592 nls[n].add_deferred = 1;
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
593 }
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
594 #endif
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
595 #if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
596 if (nls[n].deferred_accept) {
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
597 nls[n].add_deferred = 1;
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
598 }
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
599 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
600 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
601 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
602
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
603 } else {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
604 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
605 for (i = 0; i < cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
606 ls[i].open = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
607 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
608 if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
609 ls[i].add_deferred = 1;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
610 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
611 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
612 #if (NGX_HAVE_DEFERRED_ACCEPT && defined TCP_DEFER_ACCEPT)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
613 if (ls[i].deferred_accept) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
614 ls[i].add_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
615 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
616 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
617 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
618 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
619
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
620 if (ngx_open_listening_sockets(cycle) != NGX_OK) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
621 goto failed;
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
622 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
623
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
624 if (!ngx_test_config) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
625 ngx_configure_listening_sockets(cycle);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
626 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
627
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
628
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
629 /* commit the new cycle configuration */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
630
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
631 if (!ngx_use_stderr) {
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
632 (void) ngx_log_redirect_stderr(cycle);
449
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
633 }
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
634
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
635 pool->log = cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
636
6378
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6187
diff changeset
637 if (ngx_init_modules(cycle) != NGX_OK) {
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6187
diff changeset
638 /* fatal */
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6187
diff changeset
639 exit(1);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
640 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
641
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
642
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
643 /* close and delete stuff that lefts from an old cycle */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
644
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
645 /* free the unnecessary shared memory */
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
646
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
647 opart = &old_cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
648 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
649
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
650 for (i = 0; /* void */ ; i++) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
651
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
652 if (i >= opart->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
653 if (opart->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
654 goto old_shm_zone_done;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
655 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
656 opart = opart->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
657 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
658 i = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
659 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
660
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
661 part = &cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
662 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
663
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
664 for (n = 0; /* void */ ; n++) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
665
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
666 if (n >= part->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
667 if (part->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
668 break;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
669 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
670 part = part->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
671 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
672 n = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
673 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
674
7151
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
675 if (oshm_zone[i].shm.name.len != shm_zone[n].shm.name.len) {
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
676 continue;
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
677 }
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
678
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
679 if (ngx_strncmp(oshm_zone[i].shm.name.data,
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
680 shm_zone[n].shm.name.data,
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
681 oshm_zone[i].shm.name.len)
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
682 != 0)
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
683 {
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
684 continue;
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
685 }
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
686
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
687 if (oshm_zone[i].tag == shm_zone[n].tag
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
688 && oshm_zone[i].shm.size == shm_zone[n].shm.size
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
689 && !oshm_zone[i].noreuse)
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
690 {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
691 goto live_shm_zone;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
692 }
7151
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
693
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
694 break;
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
695 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
696
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
697 ngx_shm_free(&oshm_zone[i].shm);
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
698
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
699 live_shm_zone:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
700
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
701 continue;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
702 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
703
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
704 old_shm_zone_done:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
705
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
706
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
707 /* close the unnecessary listening sockets */
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
708
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
709 ls = old_cycle->listening.elts;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
710 for (i = 0; i < old_cycle->listening.nelts; i++) {
2924
a0987c332d8e win32 master process had aready closed listening sockets
Igor Sysoev <igor@sysoev.ru>
parents: 2923
diff changeset
711
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
712 if (ls[i].remain || ls[i].fd == (ngx_socket_t) -1) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
713 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
714 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
715
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
716 if (ngx_close_socket(ls[i].fd) == -1) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
717 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
718 ngx_close_socket_n " listening socket on %V failed",
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
719 &ls[i].addr_text);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
720 }
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
721
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
722 #if (NGX_HAVE_UNIX_DOMAIN)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
723
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
724 if (ls[i].sockaddr->sa_family == AF_UNIX) {
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
725 u_char *name;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
726
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
727 name = ls[i].addr_text.data + sizeof("unix:") - 1;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
728
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
729 ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
730 "deleting socket %s", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
731
5137
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
732 if (ngx_delete_file(name) == NGX_FILE_ERROR) {
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
733 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
734 ngx_delete_file_n " %s failed", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
735 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
736 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
737
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
738 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
739 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
740
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
741
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
742 /* close the unnecessary open files */
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
743
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
744 part = &old_cycle->open_files.part;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
745 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
746
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
747 for (i = 0; /* void */ ; i++) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
748
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
749 if (i >= part->nelts) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
750 if (part->next == NULL) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
751 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
752 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
753 part = part->next;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
754 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
755 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
756 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
757
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
758 if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
759 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
760 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
761
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
762 if (ngx_close_file(file[i].fd) == NGX_FILE_ERROR) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
763 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
764 ngx_close_file_n " \"%s\" failed",
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
765 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
766 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
767 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
768
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
769 ngx_destroy_pool(conf.temp_pool);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
770
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
771 if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
772
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
773 ngx_destroy_pool(old_cycle->pool);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
774 cycle->old_cycle = NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
775
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
776 return cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
777 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
778
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
779
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
780 if (ngx_temp_pool == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
781 ngx_temp_pool = ngx_create_pool(128, cycle->log);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
782 if (ngx_temp_pool == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
783 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
4133
59b99f217c6d Replaced "can not" with "cannot" and "could not" in a bunch of places.
Ruslan Ermilov <ru@nginx.com>
parents: 3992
diff changeset
784 "could not create ngx_temp_pool");
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
785 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
786 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
787
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
788 n = 10;
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
789
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
790 if (ngx_array_init(&ngx_old_cycles, ngx_temp_pool, n,
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
791 sizeof(ngx_cycle_t *))
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
792 != NGX_OK)
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
793 {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
794 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
795 }
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
796
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
797 ngx_memzero(ngx_old_cycles.elts, n * sizeof(ngx_cycle_t *));
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
798
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
799 ngx_cleaner_event.handler = ngx_clean_old_cycles;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
800 ngx_cleaner_event.log = cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
801 ngx_cleaner_event.data = &dumb;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
802 dumb.fd = (ngx_socket_t) -1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
803 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
804
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
805 ngx_temp_pool->log = cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
806
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
807 old = ngx_array_push(&ngx_old_cycles);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
808 if (old == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
809 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
810 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
811 *old = old_cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
812
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
813 if (!ngx_cleaner_event.timer_set) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
814 ngx_add_timer(&ngx_cleaner_event, 30000);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
815 ngx_cleaner_event.timer_set = 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
816 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
817
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
818 return cycle;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
819
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
820
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
821 failed:
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
822
1165
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
823 if (!ngx_is_init_cycle(old_cycle)) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
824 old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
825 ngx_core_module);
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
826 if (old_ccf->environment) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
827 environ = old_ccf->environment;
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
828 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
829 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
830
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
831 /* rollback the new cycle configuration */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
832
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
833 part = &cycle->open_files.part;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
834 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
835
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
836 for (i = 0; /* void */ ; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
837
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
838 if (i >= part->nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
839 if (part->next == NULL) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
840 break;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
841 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
842 part = part->next;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
843 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
844 i = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
845 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
846
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
847 if (file[i].fd == NGX_INVALID_FILE || file[i].fd == ngx_stderr) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
848 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
849 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
850
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
851 if (ngx_close_file(file[i].fd) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
852 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
853 ngx_close_file_n " \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
854 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
855 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
856 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
857
7394
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
858 /* free the newly created shared memory */
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
859
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
860 part = &cycle->shared_memory.part;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
861 shm_zone = part->elts;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
862
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
863 for (i = 0; /* void */ ; i++) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
864
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
865 if (i >= part->nelts) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
866 if (part->next == NULL) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
867 break;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
868 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
869 part = part->next;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
870 shm_zone = part->elts;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
871 i = 0;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
872 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
873
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
874 if (shm_zone[i].shm.addr == NULL) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
875 continue;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
876 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
877
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
878 opart = &old_cycle->shared_memory.part;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
879 oshm_zone = opart->elts;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
880
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
881 for (n = 0; /* void */ ; n++) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
882
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
883 if (n >= opart->nelts) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
884 if (opart->next == NULL) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
885 break;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
886 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
887 opart = opart->next;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
888 oshm_zone = opart->elts;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
889 n = 0;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
890 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
891
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
892 if (shm_zone[i].shm.name.len != oshm_zone[n].shm.name.len) {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
893 continue;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
894 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
895
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
896 if (ngx_strncmp(shm_zone[i].shm.name.data,
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
897 oshm_zone[n].shm.name.data,
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
898 shm_zone[i].shm.name.len)
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
899 != 0)
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
900 {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
901 continue;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
902 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
903
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
904 if (shm_zone[i].tag == oshm_zone[n].tag
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
905 && shm_zone[i].shm.size == oshm_zone[n].shm.size
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
906 && !shm_zone[i].noreuse)
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
907 {
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
908 goto old_shm_zone_found;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
909 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
910
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
911 break;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
912 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
913
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
914 ngx_shm_free(&shm_zone[i].shm);
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
915
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
916 old_shm_zone_found:
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
917
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
918 continue;
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
919 }
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
920
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
921 if (ngx_test_config) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
922 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
923 return NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
924 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
925
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
926 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
927 for (i = 0; i < cycle->listening.nelts; i++) {
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
928 if (ls[i].fd == (ngx_socket_t) -1 || !ls[i].open) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
929 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
930 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
931
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
932 if (ngx_close_socket(ls[i].fd) == -1) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
933 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
934 ngx_close_socket_n " %V failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
935 &ls[i].addr_text);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
936 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
937 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
938
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
939 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
940
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
941 return NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
942 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
943
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
944
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
945 static void
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
946 ngx_destroy_cycle_pools(ngx_conf_t *conf)
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
947 {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
948 ngx_destroy_pool(conf->temp_pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
949 ngx_destroy_pool(conf->pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
950 }
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
951
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
952
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
953 static ngx_int_t
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
954 ngx_init_zone_pool(ngx_cycle_t *cycle, ngx_shm_zone_t *zn)
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
955 {
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
956 u_char *file;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
957 ngx_slab_pool_t *sp;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
958
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
959 sp = (ngx_slab_pool_t *) zn->shm.addr;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
960
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
961 if (zn->shm.exists) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
962
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
963 if (sp == sp->addr) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
964 return NGX_OK;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
965 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
966
6133
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
967 #if (NGX_WIN32)
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
968
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
969 /* remap at the required address */
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
970
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
971 if (ngx_shm_remap(&zn->shm, sp->addr) != NGX_OK) {
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
972 return NGX_ERROR;
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
973 }
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
974
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
975 sp = (ngx_slab_pool_t *) zn->shm.addr;
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
976
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
977 if (sp == sp->addr) {
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
978 return NGX_OK;
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
979 }
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
980
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
981 #endif
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
982
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
983 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
984 "shared zone \"%V\" has no equal addresses: %p vs %p",
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
985 &zn->shm.name, sp->addr, sp);
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
986 return NGX_ERROR;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
987 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
988
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
989 sp->end = zn->shm.addr + zn->shm.size;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
990 sp->min_shift = 3;
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
991 sp->addr = zn->shm.addr;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
992
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
993 #if (NGX_HAVE_ATOMIC_OPS)
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
994
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
995 file = NULL;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
996
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
997 #else
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
998
7366
7bf3c323cb6e Fixed off-by-one error in shared zone initialization.
Ruslan Ermilov <ru@nginx.com>
parents: 7151
diff changeset
999 file = ngx_pnalloc(cycle->pool,
7bf3c323cb6e Fixed off-by-one error in shared zone initialization.
Ruslan Ermilov <ru@nginx.com>
parents: 7151
diff changeset
1000 cycle->lock_file.len + zn->shm.name.len + 1);
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1001 if (file == NULL) {
2736
218b8949f2fd style fix: remove tabs
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1002 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1003 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1004
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1005 (void) ngx_sprintf(file, "%V%V%Z", &cycle->lock_file, &zn->shm.name);
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1006
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1007 #endif
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1008
4309
3f6040cd731e Added shmtx interface to forcibly unlock mutexes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
1009 if (ngx_shmtx_create(&sp->mutex, &sp->lock, file) != NGX_OK) {
2736
218b8949f2fd style fix: remove tabs
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
1010 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1011 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1012
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1013 ngx_slab_init(sp);
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1014
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1015 return NGX_OK;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1016 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1017
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1018
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1019 ngx_int_t
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1020 ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log)
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1021 {
2688
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
1022 size_t len;
7685
4f30f75dbdf3 Core: close PID file when writing fails.
Ruslan Ermilov <ru@nginx.com>
parents: 7662
diff changeset
1023 ngx_int_t rc;
2688
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
1024 ngx_uint_t create;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
1025 ngx_file_t file;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
1026 u_char pid[NGX_INT64_LEN + 2];
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1027
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1028 if (ngx_process > NGX_PROCESS_MASTER) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1029 return NGX_OK;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1030 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
1031
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1032 if (name->len == 0) {
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1033 return NGX_OK;
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1034 }
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1035
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1036 ngx_memzero(&file, sizeof(ngx_file_t));
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
1037
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1038 file.name = *name;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1039 file.log = log;
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1040
2686
9e0ae986b587 adopt NGX_FILE_TRUNCATE for win32
Igor Sysoev <igor@sysoev.ru>
parents: 2629
diff changeset
1041 create = ngx_test_config ? NGX_FILE_CREATE_OR_OPEN : NGX_FILE_TRUNCATE;
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1042
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1043 file.fd = ngx_open_file(file.name.data, NGX_FILE_RDWR,
2686
9e0ae986b587 adopt NGX_FILE_TRUNCATE for win32
Igor Sysoev <igor@sysoev.ru>
parents: 2629
diff changeset
1044 create, NGX_FILE_DEFAULT_ACCESS);
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1045
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1046 if (file.fd == NGX_INVALID_FILE) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1047 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1048 ngx_open_file_n " \"%s\" failed", file.name.data);
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1049 return NGX_ERROR;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1050 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1051
7685
4f30f75dbdf3 Core: close PID file when writing fails.
Ruslan Ermilov <ru@nginx.com>
parents: 7662
diff changeset
1052 rc = NGX_OK;
4f30f75dbdf3 Core: close PID file when writing fails.
Ruslan Ermilov <ru@nginx.com>
parents: 7662
diff changeset
1053
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1054 if (!ngx_test_config) {
942
7ddc5345fb4f fix for Linix/ppc64 or FreeBSD/amd64 in 32-bit mode,
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
1055 len = ngx_snprintf(pid, NGX_INT64_LEN + 2, "%P%N", ngx_pid) - pid;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1056
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1057 if (ngx_write_file(&file, pid, len, 0) == NGX_ERROR) {
7685
4f30f75dbdf3 Core: close PID file when writing fails.
Ruslan Ermilov <ru@nginx.com>
parents: 7662
diff changeset
1058 rc = NGX_ERROR;
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1059 }
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1060 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1061
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1062 if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1063 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1064 ngx_close_file_n " \"%s\" failed", file.name.data);
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1065 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1066
7685
4f30f75dbdf3 Core: close PID file when writing fails.
Ruslan Ermilov <ru@nginx.com>
parents: 7662
diff changeset
1067 return rc;
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1068 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1069
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1070
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1071 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1072 ngx_delete_pidfile(ngx_cycle_t *cycle)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1073 {
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1074 u_char *name;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1075 ngx_core_conf_t *ccf;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1076
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1077 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1078
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1079 if (ccf->pid.len == 0) {
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1080 return;
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1081 }
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1082
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
1083 name = ngx_new_binary ? ccf->oldpid.data : ccf->pid.data;
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1084
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1085 if (ngx_delete_file(name) == NGX_FILE_ERROR) {
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1086 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1087 ngx_delete_file_n " \"%s\" failed", name);
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1088 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1089 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1090
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1091
9269
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1092 static ngx_int_t
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1093 ngx_pidfile_changed(ngx_str_t *name1, ngx_str_t *name2, ngx_log_t *log)
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1094 {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1095 u_char *real1, *real2;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1096 ngx_int_t rc;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1097
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1098 if (name1->len == name2->len
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1099 && ngx_strcmp(name1->data, name2->data) == 0)
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1100 {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1101 return 0;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1102 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1103
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1104 rc = 1;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1105 real1 = NULL;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1106 real2 = NULL;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1107
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1108 real1 = ngx_realpath(name1->data, NULL);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1109
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1110 if (real1 == NULL) {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1111 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, ngx_errno,
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1112 ngx_realpath_n " \"%s\" failed", name1->data);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1113 goto done;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1114 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1115
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1116 real2 = ngx_realpath(name2->data, NULL);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1117
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1118 if (real2 == NULL) {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1119 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, ngx_errno,
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1120 ngx_realpath_n " \"%s\" failed", name2->data);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1121 goto done;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1122 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1123
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1124 rc = ngx_strcmp(real1, real2);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1125
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1126 done:
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1127
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1128 if (real1 && real1 != name1->data) {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1129 ngx_free(real1);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1130 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1131
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1132 if (real2 && real2 != name2->data) {
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1133 ngx_free(real2);
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1134 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1135
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1136 return rc;
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1137 }
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1138
4eb02e5ddb48 Core: added realpath() checking when testing PID files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 9268
diff changeset
1139
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1140 ngx_int_t
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1141 ngx_signal_process(ngx_cycle_t *cycle, char *sig)
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1142 {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1143 ssize_t n;
6483
3a50ccd94333 Fixed ngx_os_signal_process() prototype.
Ruslan Ermilov <ru@nginx.com>
parents: 6480
diff changeset
1144 ngx_pid_t pid;
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1145 ngx_file_t file;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1146 ngx_core_conf_t *ccf;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1147 u_char buf[NGX_INT64_LEN + 2];
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1148
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1149 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "signal process started");
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1150
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1151 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1152
9268
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1153 if (ccf->pid.len == 0) {
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1154 ngx_log_error(NGX_LOG_ERR, cycle->log, 0,
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1155 "no PID file configured");
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1156 return 1;
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1157 }
6a3ee145d0b5 Core: made it possible to disable PID files with "pid off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 7744
diff changeset
1158
4869
2b129bb067b5 Made sure to initialize the entire ngx_file_t structure.
Andrey Belov <defan@nginx.com>
parents: 4777
diff changeset
1159 ngx_memzero(&file, sizeof(ngx_file_t));
2b129bb067b5 Made sure to initialize the entire ngx_file_t structure.
Andrey Belov <defan@nginx.com>
parents: 4777
diff changeset
1160
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1161 file.name = ccf->pid;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1162 file.log = cycle->log;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1163
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1164 file.fd = ngx_open_file(file.name.data, NGX_FILE_RDONLY,
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1165 NGX_FILE_OPEN, NGX_FILE_DEFAULT_ACCESS);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1166
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1167 if (file.fd == NGX_INVALID_FILE) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1168 ngx_log_error(NGX_LOG_ERR, cycle->log, ngx_errno,
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1169 ngx_open_file_n " \"%s\" failed", file.name.data);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1170 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1171 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1172
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1173 n = ngx_read_file(&file, buf, NGX_INT64_LEN + 2, 0);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1174
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1175 if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1176 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1177 ngx_close_file_n " \"%s\" failed", file.name.data);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1178 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1179
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1180 if (n == NGX_ERROR) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1181 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1182 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1183
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1184 while (n-- && (buf[n] == CR || buf[n] == LF)) { /* void */ }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1185
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1186 pid = ngx_atoi(buf, ++n);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1187
6483
3a50ccd94333 Fixed ngx_os_signal_process() prototype.
Ruslan Ermilov <ru@nginx.com>
parents: 6480
diff changeset
1188 if (pid == (ngx_pid_t) NGX_ERROR) {
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1189 ngx_log_error(NGX_LOG_ERR, cycle->log, 0,
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1190 "invalid PID number \"%*s\" in \"%s\"",
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1191 n, buf, file.name.data);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1192 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1193 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1194
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1195 return ngx_os_signal_process(cycle, sig, pid);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1196
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1197 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1198
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1199
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1200 static ngx_int_t
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1201 ngx_test_lockfile(u_char *file, ngx_log_t *log)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1202 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1203 #if !(NGX_HAVE_ATOMIC_OPS)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1204 ngx_fd_t fd;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1205
1100
01884449985f fix building on platforms with non-supported atomic operations
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1206 fd = ngx_open_file(file, NGX_FILE_RDWR, NGX_FILE_CREATE_OR_OPEN,
01884449985f fix building on platforms with non-supported atomic operations
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1207 NGX_FILE_DEFAULT_ACCESS);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1208
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1209 if (fd == NGX_INVALID_FILE) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1210 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1211 ngx_open_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1212 return NGX_ERROR;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1213 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1214
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1215 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1216 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1217 ngx_close_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1218 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1219
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1220 if (ngx_delete_file(file) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1221 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1222 ngx_delete_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1223 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1224
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1225 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1226
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1227 return NGX_OK;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1228 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1229
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1230
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1231 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1232 ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1233 {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1234 ngx_fd_t fd;
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 286
diff changeset
1235 ngx_uint_t i;
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1236 ngx_list_part_t *part;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1237 ngx_open_file_t *file;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1238
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1239 part = &cycle->open_files.part;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1240 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1241
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1242 for (i = 0; /* void */ ; i++) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1243
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1244 if (i >= part->nelts) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1245 if (part->next == NULL) {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1246 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1247 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1248 part = part->next;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
1249 file = part->elts;
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1250 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1251 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1252
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
1253 if (file[i].name.len == 0) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1254 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1255 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1256
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
1257 if (file[i].flush) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
1258 file[i].flush(&file[i], cycle->log);
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1259 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1260
2629
367b29612a00 Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set
Igor Sysoev <igor@sysoev.ru>
parents: 2628
diff changeset
1261 fd = ngx_open_file(file[i].name.data, NGX_FILE_APPEND,
2628
64a10d6b97bd win32 ngx_open_file() supports utf8 names and NGX_FILE_APPEND
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
1262 NGX_FILE_CREATE_OR_OPEN, NGX_FILE_DEFAULT_ACCESS);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1263
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1264 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1265 "reopen file \"%s\", old:%d new:%d",
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1266 file[i].name.data, file[i].fd, fd);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1267
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1268 if (fd == NGX_INVALID_FILE) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1269 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1270 ngx_open_file_n " \"%s\" failed", file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1271 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1272 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1273
2687
5190c5dc3486 delete win32 ngx_file_append_mode() as we use reliable
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
1274 #if !(NGX_WIN32)
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1275 if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) {
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1165
diff changeset
1276 ngx_file_info_t fi;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1277
7032
d48c8cdac201 Removed excessive casts for ngx_file_info().
Ruslan Ermilov <ru@nginx.com>
parents: 6946
diff changeset
1278 if (ngx_file_info(file[i].name.data, &fi) == NGX_FILE_ERROR) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1279 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1280 ngx_file_info_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1281 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1282
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1283 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1284 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1285 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1286 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1287 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1288
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1289 continue;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1290 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1291
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1292 if (fi.st_uid != user) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1293 if (chown((const char *) file[i].name.data, user, -1) == -1) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1294 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1295 "chown(\"%s\", %d) failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1296 file[i].name.data, user);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1297
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1298 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1299 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1300 ngx_close_file_n " \"%s\" failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1301 file[i].name.data);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1302 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1303
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1304 continue;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1305 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1306 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1307
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1308 if ((fi.st_mode & (S_IRUSR|S_IWUSR)) != (S_IRUSR|S_IWUSR)) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1309
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1310 fi.st_mode |= (S_IRUSR|S_IWUSR);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1311
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1312 if (chmod((const char *) file[i].name.data, fi.st_mode) == -1) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1313 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1314 "chmod() \"%s\" failed", file[i].name.data);
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1315
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1316 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1317 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1318 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1319 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1320 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1321
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1322 continue;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1323 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1324 }
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1325 }
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1326
227
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1327 if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1328 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1329 "fcntl(FD_CLOEXEC) \"%s\" failed",
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1330 file[i].name.data);
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1331
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1332 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1333 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1334 ngx_close_file_n " \"%s\" failed",
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1335 file[i].name.data);
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1336 }
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1337
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1338 continue;
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1339 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1340 #endif
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1341
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1342 if (ngx_close_file(file[i].fd) == NGX_FILE_ERROR) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1343 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1344 ngx_close_file_n " \"%s\" failed",
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1345 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1346 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1347
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1348 file[i].fd = fd;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1349 }
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
1350
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
1351 (void) ngx_log_redirect_stderr(cycle);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1352 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1353
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1354
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1355 ngx_shm_zone_t *
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1356 ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name, size_t size, void *tag)
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1357 {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1358 ngx_uint_t i;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1359 ngx_shm_zone_t *shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1360 ngx_list_part_t *part;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1361
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1362 part = &cf->cycle->shared_memory.part;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1363 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1364
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1365 for (i = 0; /* void */ ; i++) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1366
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1367 if (i >= part->nelts) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1368 if (part->next == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1369 break;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1370 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1371 part = part->next;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1372 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1373 i = 0;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1374 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1375
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1376 if (name->len != shm_zone[i].shm.name.len) {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1377 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1378 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1379
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1380 if (ngx_strncmp(name->data, shm_zone[i].shm.name.data, name->len)
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1381 != 0)
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1382 {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1383 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1384 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1385
4777
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1386 if (tag != shm_zone[i].tag) {
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1387 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1388 "the shared memory zone \"%V\" is "
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1389 "already declared for a different use",
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1390 &shm_zone[i].shm.name);
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1391 return NULL;
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1392 }
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1393
6116
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1394 if (shm_zone[i].shm.size == 0) {
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1395 shm_zone[i].shm.size = size;
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1396 }
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1397
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1398 if (size && size != shm_zone[i].shm.size) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1399 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1400 "the size %uz of shared memory zone \"%V\" "
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1401 "conflicts with already declared size %uz",
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1402 size, &shm_zone[i].shm.name, shm_zone[i].shm.size);
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1403 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1404 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1405
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1406 return &shm_zone[i];
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1407 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1408
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1409 shm_zone = ngx_list_push(&cf->cycle->shared_memory);
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1410
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1411 if (shm_zone == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1412 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1413 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1414
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1415 shm_zone->data = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1416 shm_zone->shm.log = cf->cycle->log;
7394
650574a44505 Core: free shared memory on cycle initialization failure.
Ruslan Ermilov <ru@nginx.com>
parents: 7366
diff changeset
1417 shm_zone->shm.addr = NULL;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1418 shm_zone->shm.size = size;
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
1419 shm_zone->shm.name = *name;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1420 shm_zone->shm.exists = 0;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1421 shm_zone->init = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1422 shm_zone->tag = tag;
6103
79ddb0bdb273 Upstream: the "zone" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 6016
diff changeset
1423 shm_zone->noreuse = 0;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1424
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1425 return shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1426 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1427
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1428
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1429 static void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1430 ngx_clean_old_cycles(ngx_event_t *ev)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1431 {
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 286
diff changeset
1432 ngx_uint_t i, n, found, live;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1433 ngx_log_t *log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1434 ngx_cycle_t **cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1435
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1436 log = ngx_cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1437 ngx_temp_pool->log = log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1438
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1439 ngx_log_debug0(NGX_LOG_DEBUG_CORE, log, 0, "clean old cycles");
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1440
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1441 live = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1442
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1443 cycle = ngx_old_cycles.elts;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1444 for (i = 0; i < ngx_old_cycles.nelts; i++) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1445
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1446 if (cycle[i] == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1447 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1448 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1449
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1450 found = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1451
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1452 for (n = 0; n < cycle[i]->connection_n; n++) {
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
1453 if (cycle[i]->connections[n].fd != (ngx_socket_t) -1) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1454 found = 1;
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1455
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1456 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "live fd:%ui", n);
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1457
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1458 break;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1459 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1460 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1461
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1462 if (found) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1463 live = 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1464 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1465 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1466
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1467 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "clean old cycle: %ui", i);
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1468
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1469 ngx_destroy_pool(cycle[i]->pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1470 cycle[i] = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1471 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1472
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1473 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "old cycles status: %ui", live);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1474
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1475 if (live) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1476 ngx_add_timer(ev, 30000);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1477
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1478 } else {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1479 ngx_destroy_pool(ngx_temp_pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1480 ngx_temp_pool = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1481 ngx_old_cycles.nelts = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1482 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1483 }
6930
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1484
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1485
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1486 void
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1487 ngx_set_shutdown_timer(ngx_cycle_t *cycle)
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1488 {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1489 ngx_core_conf_t *ccf;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1490
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1491 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1492
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1493 if (ccf->shutdown_timeout) {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1494 ngx_shutdown_event.handler = ngx_shutdown_timer_handler;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1495 ngx_shutdown_event.data = cycle;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1496 ngx_shutdown_event.log = cycle->log;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1497 ngx_shutdown_event.cancelable = 1;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1498
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1499 ngx_add_timer(&ngx_shutdown_event, ccf->shutdown_timeout);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1500 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1501 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1502
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1503
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1504 static void
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1505 ngx_shutdown_timer_handler(ngx_event_t *ev)
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1506 {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1507 ngx_uint_t i;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1508 ngx_cycle_t *cycle;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1509 ngx_connection_t *c;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1510
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1511 cycle = ev->data;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1512
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1513 c = cycle->connections;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1514
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1515 for (i = 0; i < cycle->connection_n; i++) {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1516
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1517 if (c[i].fd == (ngx_socket_t) -1
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1518 || c[i].read == NULL
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1519 || c[i].read->accept
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1520 || c[i].read->channel
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1521 || c[i].read->resolver)
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1522 {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1523 continue;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1524 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1525
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1526 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1527 "*%uA shutdown timeout", c[i].number);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1528
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1529 c[i].close = 1;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1530 c[i].error = 1;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1531
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1532 c[i].read->handler(c[i].read);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1533 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1534 }