comparison src/core/nginx.c @ 117:f6e3c5d019b6

nginx-0.0.1-2003-07-11-19:17:50 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 11 Jul 2003 15:17:50 +0000
parents be27f922b9a2
children 5bf52498665c
comparison
equal deleted inserted replaced
116:571bcbff82c5 117:f6e3c5d019b6
7 7
8 static ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log); 8 static ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log);
9 static int ngx_open_listening_sockets(ngx_cycle_t *cycle, ngx_log_t *log); 9 static int ngx_open_listening_sockets(ngx_cycle_t *cycle, ngx_log_t *log);
10 static void ngx_clean_old_cycles(ngx_event_t *ev); 10 static void ngx_clean_old_cycles(ngx_event_t *ev);
11 11
12
12 #if (NGX_DEBUG) && (__FreeBSD__) 13 #if (NGX_DEBUG) && (__FreeBSD__)
13 extern char *malloc_options; 14 extern char *malloc_options;
14 #endif 15 #endif
16
17
18 typedef struct {
19 int daemon;
20 } ngx_core_conf_t;
21
22
23 static ngx_str_t core_name = ngx_string("core");
24
25 static ngx_command_t ngx_core_commands[] = {
26
27 {ngx_string("daemon"),
28 NGX_MAIN_CONF|NGX_CONF_TAKE1,
29 ngx_conf_set_core_flag_slot,
30 0,
31 offsetof(ngx_core_conf_t, daemon),
32 NULL},
33
34 ngx_null_command
35 };
36
37
38 ngx_module_t ngx_core_module = {
39 NGX_MODULE,
40 &core_name, /* module context */
41 ngx_core_commands, /* module directives */
42 NGX_CORE_MODULE, /* module type */
43 NULL, /* init module */
44 NULL /* init child */
45 };
46
15 47
16 int ngx_max_module; 48 int ngx_max_module;
17 ngx_os_io_t ngx_io; 49 ngx_os_io_t ngx_io;
18 50
19 ngx_cycle_t *ngx_cycle; 51 ngx_cycle_t *ngx_cycle;
31 int rotate; 63 int rotate;
32 64
33 65
34 int main(int argc, char *const *argv) 66 int main(int argc, char *const *argv)
35 { 67 {
36 int i; 68 int i;
37 ngx_log_t *log; 69 ngx_log_t *log;
38 ngx_cycle_t *cycle; 70 ngx_cycle_t *cycle;
71 ngx_core_conf_t *ccf;
39 72
40 #if (NGX_DEBUG) && (__FreeBSD__) 73 #if (NGX_DEBUG) && (__FreeBSD__)
41 malloc_options = "J"; 74 malloc_options = "J";
42 #endif 75 #endif
43 76
61 94
62 ngx_cycle = cycle; 95 ngx_cycle = cycle;
63 96
64 #if !(WIN32) 97 #if !(WIN32)
65 98
66 if (0) { 99 ccf = (ngx_core_conf_t *) ngx_get_conf(ngx_cycle->conf_ctx,
67 if (ngx_daemon(cycle->log) == NGX_ERROR) { 100 ngx_core_module);
101
102 if (ccf->daemon != 0) {
103 if (ngx_daemon(ngx_cycle->log) == NGX_ERROR) {
68 return 1; 104 return 1;
69 } 105 }
70 } 106 }
71 107
72 if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) { 108 if (dup2(ngx_cycle->log->file->fd, STDERR_FILENO) == -1) {
73 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "dup2(STDERR) failed"); 109 ngx_log_error(NGX_LOG_EMERG, ngx_cycle->log, ngx_errno,
110 "dup2(STDERR) failed");
74 return 1; 111 return 1;
75 } 112 }
76 113
77 #endif 114 #endif
78 115
136 int i, n, failed; 173 int i, n, failed;
137 ngx_str_t conf_file; 174 ngx_str_t conf_file;
138 ngx_conf_t conf; 175 ngx_conf_t conf;
139 ngx_pool_t *pool; 176 ngx_pool_t *pool;
140 ngx_cycle_t *cycle, **old; 177 ngx_cycle_t *cycle, **old;
178 ngx_core_conf_t *ccf;
141 ngx_open_file_t *file; 179 ngx_open_file_t *file;
142 ngx_listening_t *ls, *nls; 180 ngx_listening_t *ls, *nls;
143 181
144 182
145 pool = ngx_create_pool(16 * 1024, log); 183 pool = ngx_create_pool(16 * 1024, log);
153 return NULL; 191 return NULL;
154 } 192 }
155 cycle->pool = pool; 193 cycle->pool = pool;
156 194
157 cycle->old_cycle = old_cycle; 195 cycle->old_cycle = old_cycle;
196
158 197
159 n = old_cycle ? old_cycle->open_files.nelts : 20; 198 n = old_cycle ? old_cycle->open_files.nelts : 20;
160 cycle->open_files.elts = ngx_pcalloc(pool, n * sizeof(ngx_open_file_t)); 199 cycle->open_files.elts = ngx_pcalloc(pool, n * sizeof(ngx_open_file_t));
161 if (cycle->open_files.elts == NULL) { 200 if (cycle->open_files.elts == NULL) {
162 ngx_destroy_pool(pool); 201 ngx_destroy_pool(pool);
165 cycle->open_files.nelts = 0; 204 cycle->open_files.nelts = 0;
166 cycle->open_files.size = sizeof(ngx_open_file_t); 205 cycle->open_files.size = sizeof(ngx_open_file_t);
167 cycle->open_files.nalloc = n; 206 cycle->open_files.nalloc = n;
168 cycle->open_files.pool = pool; 207 cycle->open_files.pool = pool;
169 208
209
170 cycle->log = ngx_log_create_errlog(cycle, NULL); 210 cycle->log = ngx_log_create_errlog(cycle, NULL);
171 if (cycle->log == NULL) { 211 if (cycle->log == NULL) {
172 ngx_destroy_pool(pool); 212 ngx_destroy_pool(pool);
173 return NULL; 213 return NULL;
174 } 214 }
215
175 216
176 n = old_cycle ? old_cycle->listening.nelts : 10; 217 n = old_cycle ? old_cycle->listening.nelts : 10;
177 cycle->listening.elts = ngx_pcalloc(pool, n * sizeof(ngx_listening_t)); 218 cycle->listening.elts = ngx_pcalloc(pool, n * sizeof(ngx_listening_t));
178 if (cycle->listening.elts == NULL) { 219 if (cycle->listening.elts == NULL) {
179 ngx_destroy_pool(pool); 220 ngx_destroy_pool(pool);
182 cycle->listening.nelts = 0; 223 cycle->listening.nelts = 0;
183 cycle->listening.size = sizeof(ngx_listening_t); 224 cycle->listening.size = sizeof(ngx_listening_t);
184 cycle->listening.nalloc = n; 225 cycle->listening.nalloc = n;
185 cycle->listening.pool = pool; 226 cycle->listening.pool = pool;
186 227
228
187 cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *)); 229 cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
188 if (cycle->conf_ctx == NULL) { 230 if (cycle->conf_ctx == NULL) {
189 ngx_destroy_pool(pool); 231 ngx_destroy_pool(pool);
190 return NULL; 232 return NULL;
191 } 233 }
234
235
236 ccf = ngx_pcalloc(pool, sizeof(ngx_core_conf_t));
237 if (ccf == NULL) {
238 ngx_destroy_pool(pool);
239 return NULL;
240 }
241 ccf->daemon = -1;
242 ((void **)(cycle->conf_ctx))[ngx_core_module.index] = ccf;
243
192 244
193 ngx_memzero(&conf, sizeof(ngx_conf_t)); 245 ngx_memzero(&conf, sizeof(ngx_conf_t));
194 /* STUB: init array ? */ 246 /* STUB: init array ? */
195 conf.args = ngx_create_array(pool, 10, sizeof(ngx_str_t)); 247 conf.args = ngx_create_array(pool, 10, sizeof(ngx_str_t));
196 if (conf.args == NULL) { 248 if (conf.args == NULL) {
210 262
211 if (ngx_conf_parse(&conf, &conf_file) != NGX_CONF_OK) { 263 if (ngx_conf_parse(&conf, &conf_file) != NGX_CONF_OK) {
212 ngx_destroy_pool(pool); 264 ngx_destroy_pool(pool);
213 return NULL; 265 return NULL;
214 } 266 }
267
215 268
216 failed = 0; 269 failed = 0;
217 270
218 file = cycle->open_files.elts; 271 file = cycle->open_files.elts;
219 for (i = 0; i < cycle->open_files.nelts; i++) { 272 for (i = 0; i < cycle->open_files.nelts; i++) {