annotate src/core/ngx_cycle.c @ 6963:3ff293cfdab8

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