annotate src/core/ngx_cycle.c @ 5036:6e374742043e stable-1.2

Merge of r4944: removed GLOB_NOSORT glob option. This will result in alphabetical sorting of included files if the "include" directive with wildcards is used. Note that the behaviour is now different from that on Windows, where alphabetical sorting is not guaranteed for FindFirsFile()/FindNextFile() (used to be alphabetical on NTFS, but not on FAT). Approved by Igor Sysoev, prodded by many.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 09 Feb 2013 21:27:37 +0000
parents bbcaeccbd928
children f4809ba58b15
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);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
14 static ngx_int_t ngx_cmp_sockaddr(struct sockaddr *sa1, struct sockaddr *sa2);
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
15 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
16 ngx_shm_zone_t *shm_zone);
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
17 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
18 static void ngx_clean_old_cycles(ngx_event_t *ev);
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;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
318
56496082668b nginx-0.0.3-2004-04-16-09:14:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 317
diff changeset
27 ngx_uint_t ngx_test_config;
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3658
diff changeset
28 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
29
381
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
30 #if (NGX_THREADS)
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
31 ngx_tls_key_t ngx_core_tls_key;
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
32 #endif
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 337
diff changeset
33
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35 /* STUB NAME */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36 static ngx_connection_t dumb;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37 /* STUB */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
38
415
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
39 static ngx_str_t error_log = ngx_string(NGX_ERROR_LOG_PATH);
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
40
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
41
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
42 ngx_cycle_t *
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
43 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
44 {
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
45 void *rv;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
46 char **senv, **env;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
47 ngx_uint_t i, n;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
48 ngx_log_t *log;
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
49 ngx_time_t *tp;
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
50 ngx_conf_t conf;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
51 ngx_pool_t *pool;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
52 ngx_cycle_t *cycle, **old;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
53 ngx_shm_zone_t *shm_zone, *oshm_zone;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
54 ngx_list_part_t *part, *opart;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
55 ngx_open_file_t *file;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
56 ngx_listening_t *ls, *nls;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
57 ngx_core_conf_t *ccf, *old_ccf;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
58 ngx_core_module_t *module;
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
59 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
60
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
61 ngx_timezone_update();
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
62
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
63 /* force localtime update with a new timezone */
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
64
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
65 tp = ngx_timeofday();
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
66 tp->sec = 0;
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
67
3475
ab353d7dc182 *) introduce ngx_time_sigsafe_update() to update the error log time only
Igor Sysoev <igor@sysoev.ru>
parents: 3474
diff changeset
68 ngx_time_update();
2220
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
69
bf38420c9e25 ngx_timezone_update()
Igor Sysoev <igor@sysoev.ru>
parents: 2073
diff changeset
70
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
71 log = old_cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
72
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
73 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
74 if (pool == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
76 }
317
1308b98496a2 nginx-0.0.3-2004-04-15-19:34:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 316
diff changeset
77 pool->log = log;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
78
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
79 cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
80 if (cycle == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
81 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
82 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
84
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85 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
86 cycle->log = log;
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
87 cycle->new_log.log_level = NGX_LOG_ERR;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
88 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
89
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
90 cycle->conf_prefix.len = old_cycle->conf_prefix.len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
91 cycle->conf_prefix.data = ngx_pstrdup(pool, &old_cycle->conf_prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
92 if (cycle->conf_prefix.data == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
93 ngx_destroy_pool(pool);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
94 return NULL;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
95 }
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
96
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
97 cycle->prefix.len = old_cycle->prefix.len;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
98 cycle->prefix.data = ngx_pstrdup(pool, &old_cycle->prefix);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
99 if (cycle->prefix.data == NULL) {
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
100 ngx_destroy_pool(pool);
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
101 return NULL;
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
102 }
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
103
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
104 cycle->conf_file.len = old_cycle->conf_file.len;
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
105 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
106 if (cycle->conf_file.data == NULL) {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
107 ngx_destroy_pool(pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
108 return NULL;
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
109 }
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
110 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
111 old_cycle->conf_file.len + 1);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
112
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
113 cycle->conf_param.len = old_cycle->conf_param.len;
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
114 cycle->conf_param.data = ngx_pstrdup(pool, &old_cycle->conf_param);
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
115 if (cycle->conf_param.data == NULL) {
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
116 ngx_destroy_pool(pool);
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
117 return NULL;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
118 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
119
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
120
4902
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
121 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
122
4902
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
123 cycle->paths.elts = ngx_pcalloc(pool, n * sizeof(ngx_path_t *));
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
124 if (cycle->paths.elts == NULL) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
126 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
127 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
128
4902
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
129 cycle->paths.nelts = 0;
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
130 cycle->paths.size = sizeof(ngx_path_t *);
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
131 cycle->paths.nalloc = n;
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
132 cycle->paths.pool = pool;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
135 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
136 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
137 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
138 n += part->nelts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
139 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
140
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
141 } else {
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
142 n = 20;
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
416
b9bd635011de nginx-0.0.10-2004-09-06-22:45:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 415
diff changeset
145 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
146 != NGX_OK)
415
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
147 {
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
148 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
149 return NULL;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
150 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
151
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
152
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
153 if (old_cycle->shared_memory.part.nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
154 n = old_cycle->shared_memory.part.nelts;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
155 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
156 {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
157 n += part->nelts;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
158 }
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 } else {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
161 n = 1;
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
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
164 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
165 != NGX_OK)
860
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 ngx_destroy_pool(pool);
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
168 return NULL;
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
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
171 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
172
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
173 cycle->listening.elts = ngx_pcalloc(pool, n * sizeof(ngx_listening_t));
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
174 if (cycle->listening.elts == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
175 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
176 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
177 }
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
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 cycle->listening.nelts = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
180 cycle->listening.size = sizeof(ngx_listening_t);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
181 cycle->listening.nalloc = n;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
182 cycle->listening.pool = pool;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
183
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
184
3880
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
185 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
186
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3750
diff changeset
187
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
188 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
189 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
190 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
191 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
192 }
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
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
195 if (gethostname(hostname, NGX_MAXHOSTNAMELEN) == -1) {
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
196 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "gethostname() failed");
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
197 ngx_destroy_pool(pool);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
198 return NULL;
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
199 }
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 /* on Linux gethostname() silently truncates name that does not fit */
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
202
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
203 hostname[NGX_MAXHOSTNAMELEN - 1] = '\0';
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
204 cycle->hostname.len = ngx_strlen(hostname);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
205
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2011
diff changeset
206 cycle->hostname.data = ngx_pnalloc(pool, cycle->hostname.len);
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
207 if (cycle->hostname.data == NULL) {
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
208 ngx_destroy_pool(pool);
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
209 return NULL;
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
210 }
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
211
3222
a4f264c43173 use lowcase only hostname
Igor Sysoev <igor@sysoev.ru>
parents: 3142
diff changeset
212 ngx_strlow(cycle->hostname.data, (u_char *) hostname, cycle->hostname.len);
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
213
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1740
diff changeset
214
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
215 for (i = 0; ngx_modules[i]; i++) {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
216 if (ngx_modules[i]->type != NGX_CORE_MODULE) {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
217 continue;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
218 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
219
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
220 module = ngx_modules[i]->ctx;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
221
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
222 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
223 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
224 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
225 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
226 return NULL;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
227 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
228 cycle->conf_ctx[ngx_modules[i]->index] = rv;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
229 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
230 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
231
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
232
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
233 senv = environ;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
234
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
235
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
236 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
237 /* STUB: init array ? */
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
238 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
239 if (conf.args == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
240 ngx_destroy_pool(pool);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
241 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
242 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
243
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
244 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
245 if (conf.temp_pool == NULL) {
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
246 ngx_destroy_pool(pool);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
247 return NULL;
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
248 }
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
249
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
250
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
251 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
252 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
253 conf.pool = pool;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
254 conf.log = log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
255 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
256 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
257
728
e82eed614d4a turn off startup debug logging introduced by previous commit
Igor Sysoev <igor@sysoev.ru>
parents: 727
diff changeset
258 #if 0
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
259 log->log_level = NGX_LOG_DEBUG_ALL;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
260 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
261
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
262 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
263 environ = senv;
2073
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
264 ngx_destroy_cycle_pools(&conf);
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
265 return NULL;
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
266 }
01b71aa095cc -g switch
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
267
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
268 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
269 environ = senv;
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
270 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
271 return NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
272 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
273
3750
ffbdaa3c70d6 the -q switch
Igor Sysoev <igor@sysoev.ru>
parents: 3658
diff changeset
274 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
275 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
276 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
277 }
d621239c30f7 nginx-0.0.3-2004-04-18-23:06:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
278
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
279 for (i = 0; ngx_modules[i]; i++) {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
280 if (ngx_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
281 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
282 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
283
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
284 module = ngx_modules[i]->ctx;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
285
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
286 if (module->init_conf) {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
287 if (module->init_conf(cycle, cycle->conf_ctx[ngx_modules[i]->index])
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
288 == 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
289 {
3142
959fa3a11b03 restore environ, this fixes segfault on reconfiguration failure when
Igor Sysoev <igor@sysoev.ru>
parents: 3141
diff changeset
290 environ = senv;
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
291 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
292 return NULL;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
293 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
294 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
295 }
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
296
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
297 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
298 return cycle;
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
299 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
300
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
301 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
302
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
303 if (ngx_test_config) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
304
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
305 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
306 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
307 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
308
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
309 } else if (!ngx_is_init_cycle(old_cycle)) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
310
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
311 /*
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
312 * 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
313 * 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
314 */
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 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
317 ngx_core_module);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
318 if (ccf->pid.len != old_ccf->pid.len
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
319 || 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
320 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
321 /* new pid file name */
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 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
324 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
325 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
326
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
327 ngx_delete_pidfile(old_cycle);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
328 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
329 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
330
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
331
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
332 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
333 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
334 }
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
335
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
336
4902
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
337 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
338 goto failed;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
339 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
340
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
341
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
342 if (cycle->new_log.file == NULL) {
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
343 cycle->new_log.file = ngx_conf_open_file(cycle, &error_log);
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
344 if (cycle->new_log.file == NULL) {
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
345 goto failed;
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
346 }
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
347 }
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
348
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
349 /* 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
350
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
351 part = &cycle->open_files.part;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
352 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
353
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
354 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
355
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
356 if (i >= part->nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
357 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
358 break;
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
359 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
360 part = part->next;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
361 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
362 i = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
363 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
364
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
365 if (file[i].name.len == 0) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
366 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
367 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
368
2628
64a10d6b97bd win32 ngx_open_file() supports utf8 names and NGX_FILE_APPEND
Igor Sysoev <igor@sysoev.ru>
parents: 2536
diff changeset
369 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
370 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
371 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
372 NGX_FILE_DEFAULT_ACCESS);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
373
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
374 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
375 "log: %p %d \"%s\"",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
376 &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
377
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
378 if (file[i].fd == NGX_INVALID_FILE) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
379 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
380 ngx_open_file_n " \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
381 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
382 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
383 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
384
2687
5190c5dc3486 delete win32 ngx_file_append_mode() as we use reliable
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
385 #if !(NGX_WIN32)
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
386 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
387 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
388 "fcntl(FD_CLOEXEC) \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
389 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
390 goto failed;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
391 }
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
392 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
393 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
394
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2782
diff changeset
395 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
396 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
397
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
398
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
399 /* create shared memory */
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
400
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
401 part = &cycle->shared_memory.part;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
402 shm_zone = part->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
403
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
404 for (i = 0; /* void */ ; i++) {
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 if (i >= part->nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
407 if (part->next == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
408 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
409 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
410 part = part->next;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
411 shm_zone = part->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
412 i = 0;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
413 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
414
979
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
415 if (shm_zone[i].shm.size == 0) {
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
416 ngx_log_error(NGX_LOG_EMERG, log, 0,
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
417 "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
418 &shm_zone[i].shm.name);
979
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
419 goto failed;
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
420 }
cb876bced0c2 fix zero size shared zones
Igor Sysoev <igor@sysoev.ru>
parents: 975
diff changeset
421
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
422 shm_zone[i].shm.log = cycle->log;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
423
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
424 opart = &old_cycle->shared_memory.part;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
425 oshm_zone = opart->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
426
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
427 for (n = 0; /* void */ ; n++) {
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 if (n >= opart->nelts) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
430 if (opart->next == NULL) {
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
431 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
432 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
433 opart = opart->next;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
434 oshm_zone = opart->elts;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
435 n = 0;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
436 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
437
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
438 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
439 continue;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
440 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
441
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
442 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
443 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
444 shm_zone[i].shm.name.len)
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
445 != 0)
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
446 {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
447 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
448 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
449
4956
bbcaeccbd928 Merge of r4933, r4933: shared memory fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4902
diff changeset
450 if (shm_zone[i].tag == oshm_zone[n].tag
bbcaeccbd928 Merge of r4933, r4933: shared memory fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4902
diff changeset
451 && shm_zone[i].shm.size == oshm_zone[n].shm.size)
bbcaeccbd928 Merge of r4933, r4933: shared memory fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4902
diff changeset
452 {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
453 shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
993
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
454
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
455 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
456 != NGX_OK)
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
457 {
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
458 goto failed;
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
459 }
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
460
996
7fdcb5b9f063 fix label name
Igor Sysoev <igor@sysoev.ru>
parents: 995
diff changeset
461 goto shm_zone_found;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
462 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
463
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
464 ngx_shm_free(&oshm_zone[n].shm);
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
465
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
466 break;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
467 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
468
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
469 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
470 goto failed;
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
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
473 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
474 goto failed;
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
475 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
476
993
1b9a4d92173f pass the inherited shm_zone data
Igor Sysoev <igor@sysoev.ru>
parents: 979
diff changeset
477 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
478 goto failed;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
479 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
480
996
7fdcb5b9f063 fix label name
Igor Sysoev <igor@sysoev.ru>
parents: 995
diff changeset
481 shm_zone_found:
860
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
482
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
483 continue;
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
484 }
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
485
201d017ea470 slab allocator in shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 728
diff changeset
486
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
487 /* handle the listening sockets */
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
488
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
489 if (old_cycle->listening.nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
490 ls = old_cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
491 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
492 ls[i].remain = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
493 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
494
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
495 nls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
496 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
497
611
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 if (ls[i].ignore) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
500 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
501 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
502
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
503 if (ngx_cmp_sockaddr(nls[n].sockaddr, ls[i].sockaddr) == NGX_OK)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
504 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
505 nls[n].fd = ls[i].fd;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
506 nls[n].previous = &ls[i];
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
507 ls[i].remain = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
508
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
509 if (ls[n].backlog != nls[i].backlog) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
510 nls[n].listen = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
511 }
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 525
diff changeset
512
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
513 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
514
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
515 /*
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
516 * FreeBSD, except the most recent versions,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
517 * could not remove accept filter
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
518 */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
519 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
520
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
521 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
522 if (ngx_strcmp(ls[i].accept_filter,
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
523 nls[n].accept_filter)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
524 != 0)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
525 {
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
526 nls[n].delete_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
527 nls[n].add_deferred = 1;
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
528 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
529
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
530 } else if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
531 nls[n].delete_deferred = 1;
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 } else if (nls[n].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
534 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
535 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
536 #endif
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
537
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
538 #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
539
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
540 if (ls[n].deferred_accept && !nls[n].deferred_accept) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
541 nls[n].delete_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
542
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
543 } 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
544 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
545 nls[n].add_deferred = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
546 }
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
547 #endif
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
548 break;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
549 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
550 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
551
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
552 if (nls[n].fd == -1) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
553 nls[n].open = 1;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
554 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
555 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
556
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
557 } else {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
558 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
559 for (i = 0; i < cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
560 ls[i].open = 1;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
561 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
562 if (ls[i].accept_filter) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
563 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
564 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
565 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
566 #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
567 if (ls[i].deferred_accept) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
568 ls[i].add_deferred = 1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
569 }
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
570 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
571 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
572 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
573
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
574 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
575 goto failed;
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
576 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
577
2923
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
578 if (!ngx_test_config) {
d9c46f98b09f a signaller process should stop configuration processing just after
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
579 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
580 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
581
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
582
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
583 /* 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
584
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
585 if (!ngx_use_stderr && cycle->log->file->fd != ngx_stderr) {
449
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
586
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
587 if (ngx_set_stderr(cycle->log->file->fd) == NGX_FILE_ERROR) {
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
588 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
589 ngx_set_stderr_n " failed");
449
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
590 }
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
591 }
3b1e8c9df9ad nginx-0.1.0-2004-10-04-00:02:06 import
Igor Sysoev <igor@sysoev.ru>
parents: 448
diff changeset
592
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
593 pool->log = cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
594
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
595 for (i = 0; ngx_modules[i]; i++) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
596 if (ngx_modules[i]->init_module) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
597 if (ngx_modules[i]->init_module(cycle) != NGX_OK) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
598 /* fatal */
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
599 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
600 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
601 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
602 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
603
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
604
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
605 /* 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
606
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
607 /* free the unnecessary shared memory */
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
608
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
609 opart = &old_cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
610 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
611
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
612 for (i = 0; /* void */ ; i++) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
613
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
614 if (i >= opart->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
615 if (opart->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
616 goto old_shm_zone_done;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
617 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
618 opart = opart->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
619 oshm_zone = opart->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
620 i = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
621 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
622
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
623 part = &cycle->shared_memory.part;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
624 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
625
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
626 for (n = 0; /* void */ ; n++) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
627
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
628 if (n >= part->nelts) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
629 if (part->next == NULL) {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
630 break;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
631 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
632 part = part->next;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
633 shm_zone = part->elts;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
634 n = 0;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
635 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
636
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
637 if (oshm_zone[i].shm.name.len == shm_zone[n].shm.name.len
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
638 && ngx_strncmp(oshm_zone[i].shm.name.data,
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
639 shm_zone[n].shm.name.data,
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2688
diff changeset
640 oshm_zone[i].shm.name.len)
995
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
641 == 0)
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
642 {
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
643 goto live_shm_zone;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
644 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
645 }
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
646
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
647 ngx_shm_free(&oshm_zone[i].shm);
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 live_shm_zone:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
650
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
651 continue;
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
652 }
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 old_shm_zone_done:
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
655
4b0d9e2b31c6 free the unnecessary shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 994
diff changeset
656
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
657 /* 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
658
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
659 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
660 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
661
a0987c332d8e win32 master process had aready closed listening sockets
Igor Sysoev <igor@sysoev.ru>
parents: 2923
diff changeset
662 if (ls[i].remain || ls[i].fd == -1) {
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
663 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
664 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
665
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
666 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
667 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
668 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
669 &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
670 }
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
671
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
672 #if (NGX_HAVE_UNIX_DOMAIN)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
673
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
674 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
675 u_char *name;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
676
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
677 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
678
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
679 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
680 "deleting socket %s", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
681
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
682 if (ngx_delete_file(name) == -1) {
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
683 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
684 ngx_delete_file_n " %s failed", name);
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
685 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
686 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
687
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
688 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
689 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
690
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
691
994
151ae1691971 fix the comments
Igor Sysoev <igor@sysoev.ru>
parents: 993
diff changeset
692 /* 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
693
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
694 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
695 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
696
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
697 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
698
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
699 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
700 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
701 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
702 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
703 part = part->next;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
704 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
705 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
706 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
707
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
708 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
709 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
710 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
711
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
712 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
713 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
714 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
715 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
716 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
717 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
718
593
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
719 ngx_destroy_pool(conf.temp_pool);
425af804d968 nginx-0.3.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
720
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
721 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
722
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
723 /*
3141
cbee9c114504 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 2924
diff changeset
724 * perl_destruct() frees environ, if it is not the same as it was at
cbee9c114504 fix comment
Igor Sysoev <igor@sysoev.ru>
parents: 2924
diff changeset
725 * perl_construct() time, therefore we save the previous cycle
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
726 * environment before ngx_conf_parse() where it will be changed.
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
727 */
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
728
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
729 env = environ;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
730 environ = senv;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
731
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
732 ngx_destroy_pool(old_cycle->pool);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
733 cycle->old_cycle = NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
734
1740
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
735 environ = env;
45db41a0591c restore environ for perl_destruct()
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
736
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
737 return cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
738 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
739
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
740
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
741 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
742 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
743 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
744 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
745 "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
746 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
747 }
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 n = 10;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
750 ngx_old_cycles.elts = ngx_pcalloc(ngx_temp_pool,
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
751 n * sizeof(ngx_cycle_t *));
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
752 if (ngx_old_cycles.elts == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
753 exit(1);
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 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
756 ngx_old_cycles.size = sizeof(ngx_cycle_t *);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
757 ngx_old_cycles.nalloc = n;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
758 ngx_old_cycles.pool = ngx_temp_pool;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
759
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
760 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
761 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
762 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
763 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
764 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
765
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
766 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
767
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
768 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
769 if (old == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
770 exit(1);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
771 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
772 *old = old_cycle;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
773
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
774 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
775 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
776 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
777 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
778
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
779 return cycle;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
780
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
781
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
782 failed:
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
783
1165
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
784 if (!ngx_is_init_cycle(old_cycle)) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
785 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
786 ngx_core_module);
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
787 if (old_ccf->environment) {
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
788 environ = old_ccf->environment;
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
789 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
790 }
efb7d84db340 fix segfault when
Igor Sysoev <igor@sysoev.ru>
parents: 1100
diff changeset
791
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
792 /* rollback the new cycle configuration */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
793
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
794 part = &cycle->open_files.part;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
795 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
796
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
797 for (i = 0; /* void */ ; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
798
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
799 if (i >= part->nelts) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
800 if (part->next == NULL) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
801 break;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
802 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
803 part = part->next;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
804 file = part->elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
805 i = 0;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
806 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
807
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2738
diff changeset
808 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
809 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
810 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
811
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
812 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
813 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
814 ngx_close_file_n " \"%s\" failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
815 file[i].name.data);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
816 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
817 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
818
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
819 if (ngx_test_config) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
820 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
821 return NULL;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
822 }
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 ls = cycle->listening.elts;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
825 for (i = 0; i < cycle->listening.nelts; i++) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
826 if (ls[i].fd == -1 || !ls[i].open) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
827 continue;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
828 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
829
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
830 if (ngx_close_socket(ls[i].fd) == -1) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
831 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
832 ngx_close_socket_n " %V failed",
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
833 &ls[i].addr_text);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
834 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
835 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
836
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
837 ngx_destroy_cycle_pools(&conf);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
838
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
839 return NULL;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
840 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
841
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
842
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
843 static void
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
844 ngx_destroy_cycle_pools(ngx_conf_t *conf)
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
845 {
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
846 ngx_destroy_pool(conf->temp_pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
847 ngx_destroy_pool(conf->pool);
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
848 }
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
849
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 593
diff changeset
850
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
851 static ngx_int_t
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
852 ngx_cmp_sockaddr(struct sockaddr *sa1, struct sockaddr *sa2)
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
853 {
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
854 struct sockaddr_in *sin1, *sin2;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
855 #if (NGX_HAVE_INET6)
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
856 struct sockaddr_in6 *sin61, *sin62;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
857 #endif
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
858 #if (NGX_HAVE_UNIX_DOMAIN)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
859 struct sockaddr_un *saun1, *saun2;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
860 #endif
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
861
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
862 if (sa1->sa_family != sa2->sa_family) {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
863 return NGX_DECLINED;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
864 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
865
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
866 switch (sa1->sa_family) {
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
867
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
868 #if (NGX_HAVE_INET6)
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
869 case AF_INET6:
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
870 sin61 = (struct sockaddr_in6 *) sa1;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
871 sin62 = (struct sockaddr_in6 *) sa2;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
872
3658
99b2da73c29d fix IPv6 listen socket handling while reconfiguring
Igor Sysoev <igor@sysoev.ru>
parents: 3569
diff changeset
873 if (sin61->sin6_port != sin62->sin6_port) {
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
874 return NGX_DECLINED;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
875 }
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
876
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
877 if (ngx_memcmp(&sin61->sin6_addr, &sin62->sin6_addr, 16) != 0) {
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
878 return NGX_DECLINED;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
879 }
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
880
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
881 break;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
882 #endif
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
883
3569
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
884 #if (NGX_HAVE_UNIX_DOMAIN)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
885 case AF_UNIX:
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
886 saun1 = (struct sockaddr_un *) sa1;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
887 saun2 = (struct sockaddr_un *) sa2;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
888
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
889 if (ngx_memcmp(&saun1->sun_path, &saun2->sun_path,
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
890 sizeof(saun1->sun_path))
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
891 != 0)
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
892 {
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
893 return NGX_DECLINED;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
894 }
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
895
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
896 break;
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
897 #endif
8bb6ce44672a *) delete no longer used unix domain sockets
Igor Sysoev <igor@sysoev.ru>
parents: 3475
diff changeset
898
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
899 default: /* AF_INET */
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
900
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
901 sin1 = (struct sockaddr_in *) sa1;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
902 sin2 = (struct sockaddr_in *) sa2;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
903
2512
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
904 if (sin1->sin_port != sin2->sin_port) {
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
905 return NGX_DECLINED;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
906 }
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
907
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
908 if (sin1->sin_addr.s_addr != sin2->sin_addr.s_addr) {
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
909 return NGX_DECLINED;
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
910 }
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
911
2e91aecb9e57 a prelimiary IPv6 support, HTTP listen
Igor Sysoev <igor@sysoev.ru>
parents: 2466
diff changeset
912 break;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
913 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
914
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
915 return NGX_OK;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
916 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
917
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
918
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
919 static ngx_int_t
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
920 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
921 {
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
922 u_char *file;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
923 ngx_slab_pool_t *sp;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
924
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
925 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
926
2905
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
927 if (zn->shm.exists) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
928
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
929 if (sp == sp->addr) {
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
930 return NGX_OK;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
931 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
932
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
933 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
934 "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
935 &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
936 return NGX_ERROR;
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
937 }
5ff1ae0eada7 test that zone has the same addresses in different processes
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
938
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
939 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
940 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
941 sp->addr = zn->shm.addr;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
942
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
943 #if (NGX_HAVE_ATOMIC_OPS)
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
944
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
945 file = NULL;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
946
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
947 #else
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
948
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
949 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
950 if (file == NULL) {
2736
218b8949f2fd style fix: remove tabs
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
951 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
952 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
953
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
954 (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
955
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
956 #endif
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
957
4309
3f6040cd731e Added shmtx interface to forcibly unlock mutexes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
958 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
959 return NGX_ERROR;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
960 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
961
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
962 ngx_slab_init(sp);
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
963
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
964 return NGX_OK;
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
965 }
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
966
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
967
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
968 ngx_int_t
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
969 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
970 {
2688
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
971 size_t len;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
972 ngx_uint_t create;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
973 ngx_file_t file;
9bcda0da8d36 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2687
diff changeset
974 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
975
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
976 if (ngx_process > NGX_PROCESS_MASTER) {
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
977 return NGX_OK;
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
978 }
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2722
diff changeset
979
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
980 ngx_memzero(&file, sizeof(ngx_file_t));
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
981
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
982 file.name = *name;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
983 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
984
2686
9e0ae986b587 adopt NGX_FILE_TRUNCATE for win32
Igor Sysoev <igor@sysoev.ru>
parents: 2629
diff changeset
985 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
986
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
987 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
988 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
989
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
990 if (file.fd == NGX_INVALID_FILE) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
991 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
992 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
993 return NGX_ERROR;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
994 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
995
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
996 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
997 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
998
337
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
999 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
1000 return NGX_ERROR;
4feff829a849 nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1001 }
310
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
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 310
diff changeset
1004 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
1005 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
1006 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
1007 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1008
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1009 return NGX_OK;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1010 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1011
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1012
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1013 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1014 ngx_delete_pidfile(ngx_cycle_t *cycle)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
1015 {
310
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1016 u_char *name;
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1017 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
1018
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1019 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
1020
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
1021 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
1022
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1023 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
1024 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
1025 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
1026 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1027 }
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1028
a9a9af2c7370 nginx-0.0.3-2004-04-12-10:10:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
1029
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1030 ngx_int_t
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1031 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
1032 {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1033 ssize_t n;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1034 ngx_int_t pid;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1035 ngx_file_t file;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1036 ngx_core_conf_t *ccf;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1037 u_char buf[NGX_INT64_LEN + 2];
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 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
1040
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1041 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
1042
4902
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
1043 ngx_memzero(&file, sizeof(ngx_file_t));
db9ce6fc9482 Merge of r4870, r4871, r4890, r4895: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4848
diff changeset
1044
2738
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1045 file.name = ccf->pid;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1046 file.log = cycle->log;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1047
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1048 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
1049 NGX_FILE_OPEN, NGX_FILE_DEFAULT_ACCESS);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1050
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1051 if (file.fd == NGX_INVALID_FILE) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1052 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
1053 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
1054 return 1;
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 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
1058
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1059 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
1060 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
1061 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
1062 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1063
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1064 if (n == NGX_ERROR) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1065 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1066 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1067
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1068 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
1069
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1070 pid = ngx_atoi(buf, ++n);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1071
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1072 if (pid == NGX_ERROR) {
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1073 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
1074 "invalid PID number \"%*s\" in \"%s\"",
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1075 n, buf, file.name.data);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1076 return 1;
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1077 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1078
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1079 return ngx_os_signal_process(cycle, sig, pid);
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1080
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1081 }
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1082
ae81441e23f4 implement "-s signal" option for Unix
Igor Sysoev <igor@sysoev.ru>
parents: 2736
diff changeset
1083
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1084 static ngx_int_t
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1085 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
1086 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1087 #if !(NGX_HAVE_ATOMIC_OPS)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1088 ngx_fd_t fd;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1089
1100
01884449985f fix building on platforms with non-supported atomic operations
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
1090 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
1091 NGX_FILE_DEFAULT_ACCESS);
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1092
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1093 if (fd == NGX_INVALID_FILE) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1094 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
1095 ngx_open_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1096 return NGX_ERROR;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1097 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1098
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1099 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1100 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
1101 ngx_close_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1102 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1103
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1104 if (ngx_delete_file(file) == NGX_FILE_ERROR) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1105 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
1106 ngx_delete_file_n " \"%s\" failed", file);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1107 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1108
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1109 #endif
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1110
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1111 return NGX_OK;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1112 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1113
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 607
diff changeset
1114
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1115 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1116 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
1117 {
2302
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1118 ssize_t n, len;
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1119 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
1120 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
1121 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
1122 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
1123
414
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1124 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
1125 file = part->elts;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1126
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1127 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
1128
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1129 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
1130 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
1131 break;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1132 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1133 part = part->next;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 517
diff changeset
1134 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
1135 i = 0;
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1136 }
388a842cbbe1 nginx-0.0.10-2004-09-03-19:50:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 381
diff changeset
1137
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
1138 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
1139 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1140 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1141
2302
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1142 len = file[i].pos - file[i].buffer;
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1143
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1144 if (file[i].buffer && len != 0) {
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1145
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1146 n = ngx_write_fd(file[i].fd, file[i].buffer, len);
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1147
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1148 if (n == NGX_FILE_ERROR) {
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1149 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1150 ngx_write_fd_n " to \"%s\" failed",
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1151 file[i].name.data);
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1152
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1153 } else if (n != len) {
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1154 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1155 ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1156 file[i].name.data, n, len);
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1157 }
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2220
diff changeset
1158
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1159 file[i].pos = file[i].buffer;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1160 }
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
1161
2629
367b29612a00 Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set
Igor Sysoev <igor@sysoev.ru>
parents: 2628
diff changeset
1162 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
1163 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
1164
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1165 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
1166 "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
1167 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
1168
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1169 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
1170 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
1171 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
1172 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1173 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1174
2687
5190c5dc3486 delete win32 ngx_file_append_mode() as we use reliable
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
1175 #if !(NGX_WIN32)
517
dadfa78d2270 nginx-0.1.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
1176 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
1177 ngx_file_info_t fi;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1178
2782
4bd7825fab80 uniform ngx_file_info() interface with ngx_fd_info()
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
1179 if (ngx_file_info((const char *) file[i].name.data, &fi)
4bd7825fab80 uniform ngx_file_info() interface with ngx_fd_info()
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
1180 == NGX_FILE_ERROR)
4bd7825fab80 uniform ngx_file_info() interface with ngx_fd_info()
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
1181 {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1182 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
1183 ngx_file_info_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1184 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1185
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1186 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1187 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
1188 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1189 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1190 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1191 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1192
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1193 if (fi.st_uid != user) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1194 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
1195 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
1196 "chown(\"%s\", %d) failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1197 file[i].name.data, user);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1198
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1199 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1200 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
1201 ngx_close_file_n " \"%s\" failed",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1202 file[i].name.data);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1203 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1204 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1205 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1206
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1207 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
1208
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1209 fi.st_mode |= (S_IRUSR|S_IWUSR);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1210
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1211 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
1212 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
1213 "chmod() \"%s\" failed", file[i].name.data);
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1214
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1215 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1216 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
1217 ngx_close_file_n " \"%s\" failed",
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1218 file[i].name.data);
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1219 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1220 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 449
diff changeset
1221 }
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1222 }
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1223
227
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1224 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
1225 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
1226 "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
1227 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
1228
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1229 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
1230 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
1231 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
1232 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
1233 }
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1234
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1235 continue;
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 220
diff changeset
1236 }
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1237 #endif
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1238
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1239 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
1240 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
1241 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
1242 file[i].name.data);
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1243 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1244
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1245 file[i].fd = fd;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1246 }
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
1247
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1248 #if !(NGX_WIN32)
286
fc8dc489247e nginx-0.0.2-2004-03-12-00:34:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 282
diff changeset
1249
415
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
1250 if (cycle->log->file->fd != STDERR_FILENO) {
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
1251 if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) {
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
1252 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
1253 "dup2(STDERR) failed");
3c56e834be46 nginx-0.0.10-2004-09-05-23:54:02 import
Igor Sysoev <igor@sysoev.ru>
parents: 414
diff changeset
1254 }
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 237
diff changeset
1255 }
286
fc8dc489247e nginx-0.0.2-2004-03-12-00:34:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 282
diff changeset
1256
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
1257 #endif
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1258 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1259
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1260
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1261 ngx_shm_zone_t *
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1262 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
1263 {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1264 ngx_uint_t i;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1265 ngx_shm_zone_t *shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1266 ngx_list_part_t *part;
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 part = &cf->cycle->shared_memory.part;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1269 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1270
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1271 for (i = 0; /* void */ ; i++) {
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 if (i >= part->nelts) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1274 if (part->next == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1275 break;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1276 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1277 part = part->next;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1278 shm_zone = part->elts;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1279 i = 0;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1280 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1281
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
1282 if (name->len != shm_zone[i].shm.name.len) {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1283 continue;
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
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
1286 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
1287 != 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
1288 {
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1289 continue;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1290 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1291
4848
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1292 if (tag != shm_zone[i].tag) {
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1293 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1294 "the shared memory zone \"%V\" is "
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1295 "already declared for a different use",
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1296 &shm_zone[i].shm.name);
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1297 return NULL;
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1298 }
a0f1d53546d4 Merge of r4778, r4782, r4783, r4824, r4830, r4834: minor fixes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
1299
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1300 if (size && size != shm_zone[i].shm.size) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1301 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
1302 "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
1303 "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
1304 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
1305 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1306 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1307
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1308 return &shm_zone[i];
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1309 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1310
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1311 shm_zone = ngx_list_push(&cf->cycle->shared_memory);
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1312
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1313 if (shm_zone == NULL) {
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1314 return NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1315 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1316
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1317 shm_zone->data = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1318 shm_zone->shm.log = cf->cycle->log;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1319 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
1320 shm_zone->shm.name = *name;
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2717
diff changeset
1321 shm_zone->shm.exists = 0;
972
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1322 shm_zone->init = NULL;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1323 shm_zone->tag = tag;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1324
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1325 return shm_zone;
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1326 }
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1327
6e7a20529f53 ngx_shared_memory_add()
Igor Sysoev <igor@sysoev.ru>
parents: 942
diff changeset
1328
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1329 static void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
1330 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
1331 {
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 286
diff changeset
1332 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
1333 ngx_log_t *log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1334 ngx_cycle_t **cycle;
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 log = ngx_cycle->log;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1337 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
1338
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1339 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
1340
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1341 live = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1342
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1343 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
1344 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
1345
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1346 if (cycle[i] == NULL) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1347 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1348 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1349
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1350 found = 0;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1351
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1352 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
1353 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
1354 found = 1;
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1355
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1356 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "live fd:%d", n);
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1357
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1358 break;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1359 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1360 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1361
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1362 if (found) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1363 live = 1;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1364 continue;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1365 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1366
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1367 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "clean old cycle: %d", i);
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1368
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1369 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
1370 cycle[i] = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1371 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1372
257
70e1c7d2b83d nginx-0.0.2-2004-02-11-20:08:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 255
diff changeset
1373 ngx_log_debug1(NGX_LOG_DEBUG_CORE, log, 0, "old cycles status: %d", live);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1374
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1375 if (live) {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1376 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
1377
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1378 } else {
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1379 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
1380 ngx_temp_pool = NULL;
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1381 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
1382 }
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1383 }