annotate src/core/ngx_cycle.c @ 7151:9ef704d8563a

Core: free shared memory zones only after reconfiguration. This is what usually happens for zones no longer used in the new configuration, but zones where size or tag were changed were freed when creating new memory zones. If reconfiguration failed (for example, due to a conflicting listening socket), this resulted in a segmentation fault in the master process. Reported by Zhihua Cao, http://mailman.nginx.org/pipermail/nginx-devel/2017-October/010536.html.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 17 Oct 2017 19:52:16 +0300
parents d48c8cdac201
children 7bf3c323cb6e
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
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
473 break;
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
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
476 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
477 goto failed;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
478 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
479
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
480 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
481 goto failed;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
482 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
483
993
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
484 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
485 goto failed;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
486 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
487
996
7fdcb5b9f063 fix label name
Igor Sysoev <igor@sysoev.ru>
parents: 995
diff changeset
488 shm_zone_found:
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
489
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
490 continue;
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
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
493
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
494 /* handle the listening sockets */
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
495
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
496 if (old_cycle->listening.nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
497 ls = old_cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
498 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
499 ls[i].remain = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
500 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
501
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
502 nls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
503 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
504
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
505 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
506 if (ls[i].ignore) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
507 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
508 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
509
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
510 if (ls[i].remain) {
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
511 continue;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
512 }
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
513
6462
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
514 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
515 continue;
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
516 }
fd4b52e74f96 Fixed socket inheritance on reload and binary upgrade.
Roman Arutyunyan <arut@nginx.com>
parents: 6383
diff changeset
517
5473
d39ef821d03e Core: externalized ngx_cmp_sockaddr().
Ruslan Ermilov <ru@nginx.com>
parents: 5430
diff changeset
518 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
519 ls[i].sockaddr, ls[i].socklen, 1)
5473
d39ef821d03e Core: externalized ngx_cmp_sockaddr().
Ruslan Ermilov <ru@nginx.com>
parents: 5430
diff changeset
520 == NGX_OK)
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
521 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
522 nls[n].fd = ls[i].fd;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
523 nls[n].previous = &ls[i];
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
524 ls[i].remain = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
525
5603
b2b5b1b74129 Core: fixed wrong indices in listening sockets compare loops.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5473
diff changeset
526 if (ls[i].backlog != nls[n].backlog) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
527 nls[n].listen = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
528 }
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 525
diff changeset
529
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
530 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
531
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
532 /*
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
533 * FreeBSD, except the most recent versions,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
534 * could not remove accept filter
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
535 */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
536 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
537
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
538 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
539 if (ngx_strcmp(ls[i].accept_filter,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
540 nls[n].accept_filter)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
541 != 0)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
542 {
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
543 nls[n].delete_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
544 nls[n].add_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
545 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
546
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
547 } else if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
548 nls[n].delete_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
549
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
550 } else if (nls[n].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
551 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
552 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
553 #endif
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
554
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
555 #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
556
5603
b2b5b1b74129 Core: fixed wrong indices in listening sockets compare loops.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5473
diff changeset
557 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
558 nls[n].delete_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
559
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
560 } 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
561 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
562 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
563 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
564 #endif
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
565
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
566 #if (NGX_HAVE_REUSEPORT)
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
567 if (nls[n].reuseport && !ls[i].reuseport) {
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
568 nls[n].add_reuseport = 1;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
569 }
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
570 #endif
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6133
diff changeset
571
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
572 break;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
573 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
574 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
575
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
576 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
577 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
578 #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
579 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
580 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
581 }
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
582 #endif
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
583 #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
584 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
585 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
586 }
d8ee8ef5dcde Core: apply missed options to sockets added during binary upgrade.
Piotr Sikora <piotr@cloudflare.com>
parents: 5360
diff changeset
587 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
588 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
589 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
590
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
591 } else {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
592 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
593 for (i = 0; i < cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
594 ls[i].open = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
595 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
596 if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
597 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
598 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
599 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
600 #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
601 if (ls[i].deferred_accept) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
602 ls[i].add_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
603 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
604 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
605 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
606 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
607
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
608 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
609 goto failed;
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
610 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
611
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
612 if (!ngx_test_config) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
613 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
614 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
615
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
616
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
617 /* 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
618
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
619 if (!ngx_use_stderr) {
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
620 (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
621 }
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
622
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
623 pool->log = cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
624
6378
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6187
diff changeset
625 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
626 /* fatal */
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6187
diff changeset
627 exit(1);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
628 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
629
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
630
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
631 /* 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
632
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
633 /* free the unnecessary shared memory */
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
634
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
635 opart = &old_cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
636 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
637
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
638 for (i = 0; /* void */ ; i++) {
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 if (i >= opart->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
641 if (opart->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
642 goto old_shm_zone_done;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
643 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
644 opart = opart->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
645 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
646 i = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
647 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
648
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
649 part = &cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
650 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
651
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
652 for (n = 0; /* void */ ; n++) {
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 if (n >= part->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
655 if (part->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
656 break;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
657 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
658 part = part->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
659 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
660 n = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
661 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
662
7151
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
663 if (oshm_zone[i].shm.name.len != shm_zone[n].shm.name.len) {
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
664 continue;
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
665 }
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
666
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
667 if (ngx_strncmp(oshm_zone[i].shm.name.data,
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
668 shm_zone[n].shm.name.data,
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
669 oshm_zone[i].shm.name.len)
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
670 != 0)
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
671 {
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
672 continue;
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
673 }
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
674
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
675 if (oshm_zone[i].tag == shm_zone[n].tag
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
676 && oshm_zone[i].shm.size == shm_zone[n].shm.size
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
677 && !oshm_zone[i].noreuse)
995
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 goto live_shm_zone;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
680 }
7151
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
681
9ef704d8563a Core: free shared memory zones only after reconfiguration.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7032
diff changeset
682 break;
995
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
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
685 ngx_shm_free(&oshm_zone[i].shm);
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
686
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
687 live_shm_zone:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
688
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
689 continue;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
690 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
691
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
692 old_shm_zone_done:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
693
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
694
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
695 /* 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
696
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
697 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
698 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
699
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
700 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
701 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
702 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
703
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
704 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
705 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
706 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
707 &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
708 }
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
709
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
710 #if (NGX_HAVE_UNIX_DOMAIN)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
711
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
712 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
713 u_char *name;
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 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
716
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
717 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
718 "deleting socket %s", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
719
5137
f941cf265cc5 Use NGX_FILE_ERROR for handling file operations errors.
Valentin Bartenev <vbart@nginx.com>
parents: 4985
diff changeset
720 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
721 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
722 ngx_delete_file_n " %s failed", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
723 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
724 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
725
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
726 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
727 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
728
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
729
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
730 /* 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
731
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
732 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
733 file = part->elts;
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 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
736
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
737 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
738 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
739 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
740 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
741 part = part->next;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
742 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
743 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
744 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
745
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
746 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
747 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
748 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
749
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
750 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
751 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
752 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
753 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
754 }
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
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
757 ngx_destroy_pool(conf.temp_pool);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
758
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
759 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
760
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
761 ngx_destroy_pool(old_cycle->pool);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
762 cycle->old_cycle = NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
763
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
764 return cycle;
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
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
767
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
768 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
769 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
770 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
771 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
772 "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
773 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
774 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
775
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
776 n = 10;
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
777
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
778 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
779 sizeof(ngx_cycle_t *))
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
780 != NGX_OK)
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
781 {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
782 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
783 }
6946
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
784
99c87770b81b Use ngx_array_init() to initialize arrays.
Ruslan Ermilov <ru@nginx.com>
parents: 6930
diff changeset
785 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
786
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
787 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
788 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
789 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
790 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
791 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
792
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
793 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
794
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
795 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
796 if (old == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
797 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
798 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
799 *old = old_cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
800
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
801 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
802 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
803 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
804 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
805
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
806 return cycle;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
807
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
808
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
809 failed:
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
810
1165
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
811 if (!ngx_is_init_cycle(old_cycle)) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
812 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
813 ngx_core_module);
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
814 if (old_ccf->environment) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
815 environ = old_ccf->environment;
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
816 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
817 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
818
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
819 /* rollback the new cycle configuration */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
820
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
821 part = &cycle->open_files.part;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
822 file = part->elts;
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 for (i = 0; /* void */ ; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
825
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
826 if (i >= part->nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
827 if (part->next == NULL) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
828 break;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
829 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
830 part = part->next;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
831 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
832 i = 0;
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
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
835 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
836 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
837 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
838
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
839 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
840 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
841 ngx_close_file_n " \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
842 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
843 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
844 }
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 if (ngx_test_config) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
847 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
848 return NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
849 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
850
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
851 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
852 for (i = 0; i < cycle->listening.nelts; i++) {
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5260
diff changeset
853 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
854 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
855 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
856
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
857 if (ngx_close_socket(ls[i].fd) == -1) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
858 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
859 ngx_close_socket_n " %V failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
860 &ls[i].addr_text);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
861 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
862 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
863
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
864 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
865
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
866 return NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
867 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
868
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
869
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
870 static void
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
871 ngx_destroy_cycle_pools(ngx_conf_t *conf)
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
872 {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
873 ngx_destroy_pool(conf->temp_pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
874 ngx_destroy_pool(conf->pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
875 }
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
876
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
877
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
878 static ngx_int_t
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
879 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
880 {
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
881 u_char *file;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
882 ngx_slab_pool_t *sp;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
883
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
884 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
885
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
886 if (zn->shm.exists) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
887
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
888 if (sp == sp->addr) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
889 return NGX_OK;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
890 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
891
6133
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
892 #if (NGX_WIN32)
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
893
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
894 /* remap at the required address */
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 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
897 return NGX_ERROR;
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
898 }
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
899
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
900 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
901
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
902 if (sp == sp->addr) {
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
903 return NGX_OK;
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
904 }
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
905
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
906 #endif
af7eba90645d Win32: shared memory base addresses and remapping.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6132
diff changeset
907
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
908 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
909 "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
910 &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
911 return NGX_ERROR;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
912 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
913
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
914 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
915 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
916 sp->addr = zn->shm.addr;
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 #if (NGX_HAVE_ATOMIC_OPS)
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
919
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
920 file = NULL;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
921
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
922 #else
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
923
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
924 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
925 if (file == NULL) {
2736
218b8949f2fd style fix: remove tabs
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
926 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
927 }
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 (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
930
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
931 #endif
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
932
4309
3f6040cd731e Added shmtx interface to forcibly unlock mutexes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
933 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
934 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
935 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
936
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
937 ngx_slab_init(sp);
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
938
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
939 return NGX_OK;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
940 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
941
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
942
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
943 ngx_int_t
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
944 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
945 {
2688
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
946 size_t len;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
947 ngx_uint_t create;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
948 ngx_file_t file;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
949 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
950
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
951 if (ngx_process > NGX_PROCESS_MASTER) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
952 return NGX_OK;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
953 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
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 ngx_memzero(&file, sizeof(ngx_file_t));
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
956
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
957 file.name = *name;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
958 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
959
2686
9e0ae986b587 adopt NGX_FILE_TRUNCATE for win32
Igor Sysoev <igor@sysoev.ru>
parents: 2629
diff changeset
960 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
961
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
962 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
963 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
964
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
965 if (file.fd == NGX_INVALID_FILE) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
966 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
967 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
968 return NGX_ERROR;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
969 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
970
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
971 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
972 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
973
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
974 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
975 return NGX_ERROR;
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
976 }
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
977 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
978
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
979 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
980 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
981 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
982 }
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 return NGX_OK;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
985 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
986
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
987
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
988 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
989 ngx_delete_pidfile(ngx_cycle_t *cycle)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
990 {
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
991 u_char *name;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
992 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
993
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
994 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
995
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
996 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
997
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
998 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
999 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
1000 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
1001 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1002 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1003
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1004
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1005 ngx_int_t
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1006 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
1007 {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1008 ssize_t n;
6483
3a50ccd94333 Fixed ngx_os_signal_process() prototype.
Ruslan Ermilov <ru@nginx.com>
parents: 6480
diff changeset
1009 ngx_pid_t pid;
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1010 ngx_file_t file;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1011 ngx_core_conf_t *ccf;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1012 u_char buf[NGX_INT64_LEN + 2];
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1013
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1014 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
1015
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1016 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
1017
4869
2b129bb067b5 Made sure to initialize the entire ngx_file_t structure.
Andrey Belov <defan@nginx.com>
parents: 4777
diff changeset
1018 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
1019
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1020 file.name = ccf->pid;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1021 file.log = cycle->log;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1022
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1023 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
1024 NGX_FILE_OPEN, NGX_FILE_DEFAULT_ACCESS);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1025
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1026 if (file.fd == NGX_INVALID_FILE) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1027 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
1028 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
1029 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1030 }
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 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
1033
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1034 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
1035 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
1036 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
1037 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1038
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1039 if (n == NGX_ERROR) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1040 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1041 }
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 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
1044
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1045 pid = ngx_atoi(buf, ++n);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1046
6483
3a50ccd94333 Fixed ngx_os_signal_process() prototype.
Ruslan Ermilov <ru@nginx.com>
parents: 6480
diff changeset
1047 if (pid == (ngx_pid_t) NGX_ERROR) {
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1048 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
1049 "invalid PID number \"%*s\" in \"%s\"",
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1050 n, buf, file.name.data);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1051 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1052 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1053
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1054 return ngx_os_signal_process(cycle, sig, pid);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1055
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1056 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1057
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1058
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1059 static ngx_int_t
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1060 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
1061 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1062 #if !(NGX_HAVE_ATOMIC_OPS)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1063 ngx_fd_t fd;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1064
1100
01884449985f fix building on platforms with non-supported atomic operations
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1065 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
1066 NGX_FILE_DEFAULT_ACCESS);
611
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 if (fd == NGX_INVALID_FILE) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1069 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
1070 ngx_open_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1071 return NGX_ERROR;
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 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1075 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
1076 ngx_close_file_n " \"%s\" failed", file);
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 if (ngx_delete_file(file) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1080 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
1081 ngx_delete_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1082 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1083
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1084 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1085
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1086 return NGX_OK;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1087 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1088
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1089
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1090 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1091 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
1092 {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1093 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
1094 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
1095 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
1096 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
1097
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1098 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
1099 file = part->elts;
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 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
1102
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1103 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
1104 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
1105 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1106 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1107 part = part->next;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
1108 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
1109 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1110 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1111
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
1112 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
1113 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1114 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1115
4985
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
1116 if (file[i].flush) {
a0599b56e748 Reopening log files code moved to a separate function.
Valentin Bartenev <vbart@nginx.com>
parents: 4966
diff changeset
1117 file[i].flush(&file[i], cycle->log);
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1118 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1119
2629
367b29612a00 Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set
Igor Sysoev <igor@sysoev.ru>
parents: 2628
diff changeset
1120 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
1121 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
1122
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1123 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
1124 "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
1125 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
1126
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1127 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
1128 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
1129 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
1130 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1131 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1132
2687
5190c5dc3486 delete win32 ngx_file_append_mode() as we use reliable
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
1133 #if !(NGX_WIN32)
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1134 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
1135 ngx_file_info_t fi;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1136
7032
d48c8cdac201 Removed excessive casts for ngx_file_info().
Ruslan Ermilov <ru@nginx.com>
parents: 6946
diff changeset
1137 if (ngx_file_info(file[i].name.data, &fi) == NGX_FILE_ERROR) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1138 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
1139 ngx_file_info_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1140 file[i].name.data);
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 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1143 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
1144 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1145 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1146 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1147
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1148 continue;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1149 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1150
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1151 if (fi.st_uid != user) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1152 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
1153 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
1154 "chown(\"%s\", %d) failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1155 file[i].name.data, user);
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 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1158 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
1159 ngx_close_file_n " \"%s\" failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1160 file[i].name.data);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1161 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1162
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1163 continue;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1164 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1165 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1166
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1167 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
1168
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1169 fi.st_mode |= (S_IRUSR|S_IWUSR);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1170
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1171 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
1172 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
1173 "chmod() \"%s\" failed", file[i].name.data);
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 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1176 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
1177 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1178 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1179 }
5680
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1180
dfb3c15bc851 Core: fixed error handling in ngx_reopen_files().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5603
diff changeset
1181 continue;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1182 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1183 }
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1184 }
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1185
227
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1186 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
1187 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
1188 "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
1189 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
1190
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1191 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
1192 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
1193 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
1194 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
1195 }
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1196
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1197 continue;
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1198 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1199 #endif
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1200
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1201 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
1202 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
1203 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
1204 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1205 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1206
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1207 file[i].fd = fd;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1208 }
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
1209
5260
e088695737c3 Core: consolidated log-related code.
Vladimir Homutov <vl@nginx.com>
parents: 5250
diff changeset
1210 (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
1211 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1212
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1213
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1214 ngx_shm_zone_t *
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1215 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
1216 {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1217 ngx_uint_t i;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1218 ngx_shm_zone_t *shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1219 ngx_list_part_t *part;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1220
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1221 part = &cf->cycle->shared_memory.part;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1222 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1223
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1224 for (i = 0; /* void */ ; i++) {
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 if (i >= part->nelts) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1227 if (part->next == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1228 break;
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 part = part->next;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1231 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1232 i = 0;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1233 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1234
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
1235 if (name->len != shm_zone[i].shm.name.len) {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1236 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1237 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1238
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
1239 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
1240 != 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
1241 {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1242 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1243 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1244
4777
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1245 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
1246 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
1247 "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
1248 "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
1249 &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
1250 return NULL;
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1251 }
6e37004865fb Reorder checks in ngx_shared_memory_add() for more consistent error messages.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
1252
6116
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1253 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
1254 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
1255 }
48b3d5ddfb03 Core: allow shared memory size to be declared after a reference.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6110
diff changeset
1256
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1257 if (size && size != shm_zone[i].shm.size) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1258 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
1259 "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
1260 "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
1261 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
1262 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1263 }
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 return &shm_zone[i];
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1266 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1267
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1268 shm_zone = ngx_list_push(&cf->cycle->shared_memory);
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1269
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1270 if (shm_zone == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1271 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1272 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1273
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1274 shm_zone->data = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1275 shm_zone->shm.log = cf->cycle->log;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1276 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
1277 shm_zone->shm.name = *name;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1278 shm_zone->shm.exists = 0;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1279 shm_zone->init = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1280 shm_zone->tag = tag;
6103
79ddb0bdb273 Upstream: the "zone" directive.
Ruslan Ermilov <ru@nginx.com>
parents: 6016
diff changeset
1281 shm_zone->noreuse = 0;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1282
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1283 return shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1284 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1285
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1286
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1287 static void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1288 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
1289 {
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 286
diff changeset
1290 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
1291 ngx_log_t *log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1292 ngx_cycle_t **cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1293
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1294 log = ngx_cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1295 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
1296
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1297 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
1298
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1299 live = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1300
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1301 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
1302 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
1303
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1304 if (cycle[i] == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1305 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1306 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1307
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1308 found = 0;
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 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
1311 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
1312 found = 1;
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1313
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1314 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
1315
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1316 break;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1317 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1318 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1319
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1320 if (found) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1321 live = 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1322 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1323 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1324
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1325 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
1326
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1327 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
1328 cycle[i] = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1329 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1330
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6462
diff changeset
1331 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
1332
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1333 if (live) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1334 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
1335
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1336 } else {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1337 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
1338 ngx_temp_pool = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1339 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
1340 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1341 }
6930
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
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1344 void
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1345 ngx_set_shutdown_timer(ngx_cycle_t *cycle)
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1346 {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1347 ngx_core_conf_t *ccf;
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 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
1350
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1351 if (ccf->shutdown_timeout) {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1352 ngx_shutdown_event.handler = ngx_shutdown_timer_handler;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1353 ngx_shutdown_event.data = cycle;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1354 ngx_shutdown_event.log = cycle->log;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1355 ngx_shutdown_event.cancelable = 1;
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_add_timer(&ngx_shutdown_event, ccf->shutdown_timeout);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1358 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1359 }
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
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1362 static void
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1363 ngx_shutdown_timer_handler(ngx_event_t *ev)
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 ngx_uint_t i;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1366 ngx_cycle_t *cycle;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1367 ngx_connection_t *c;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1368
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1369 cycle = ev->data;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1370
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1371 c = cycle->connections;
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 for (i = 0; i < cycle->connection_n; i++) {
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 if (c[i].fd == (ngx_socket_t) -1
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1376 || c[i].read == NULL
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1377 || c[i].read->accept
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1378 || c[i].read->channel
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1379 || c[i].read->resolver)
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1380 {
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1381 continue;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1382 }
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 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1385 "*%uA shutdown timeout", c[i].number);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1386
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1387 c[i].close = 1;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1388 c[i].error = 1;
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1389
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1390 c[i].read->handler(c[i].read);
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1391 }
97c99bb43737 Introduced worker_shutdown_timeout.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6821
diff changeset
1392 }