Mercurial > hg > nginx
comparison src/core/nginx.c @ 44:0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 09 Jan 2003 05:36:00 +0000 |
parents | 53cd05892261 |
children | f1ee46c036a4 |
comparison
equal
deleted
inserted
replaced
43:53cd05892261 | 44:0e81ac0bb3e2 |
---|---|
34 ngx_pool_t *ngx_pool; | 34 ngx_pool_t *ngx_pool; |
35 | 35 |
36 | 36 |
37 int ngx_connection_counter; | 37 int ngx_connection_counter; |
38 | 38 |
39 ngx_array_t *ngx_listening_sockets; | 39 ngx_array_t ngx_listening_sockets; |
40 | 40 |
41 | 41 |
42 int main(int argc, char *const *argv) | 42 int main(int argc, char *const *argv) |
43 { | 43 { |
44 ngx_str_t conf_file; | 44 ngx_str_t conf_file; |
54 ngx_set_signals(&ngx_log); | 54 ngx_set_signals(&ngx_log); |
55 #endif | 55 #endif |
56 | 56 |
57 ngx_init_sockets(&ngx_log); | 57 ngx_init_sockets(&ngx_log); |
58 | 58 |
59 /* TODO: read config */ | 59 ngx_init_array(ngx_listening_sockets, ngx_pool, 10, sizeof(ngx_listen_t), |
60 | 60 1); |
61 #if 1 | 61 |
62 ngx_memzero(&conf, sizeof(ngx_conf_t)); | 62 ngx_memzero(&conf, sizeof(ngx_conf_t)); |
63 ngx_test_null(conf.args, | 63 ngx_test_null(conf.args, |
64 ngx_create_array(ngx_pool, 10, sizeof(ngx_str_t)), 1); | 64 ngx_create_array(ngx_pool, 10, sizeof(ngx_str_t)), 1); |
65 conf.pool = ngx_pool; | 65 conf.pool = ngx_pool; |
66 conf.log = &ngx_log; | 66 conf.log = &ngx_log; |
67 conf.type = NGX_CORE_MODULE_TYPE; | 67 conf.type = NGX_CORE_MODULE_TYPE; |
68 | 68 |
69 conf_file.len = sizeof("nginx.conf") - 1; | 69 conf_file.len = sizeof("nginx.conf") - 1; |
70 conf_file.data = "nginx.conf"; | 70 conf_file.data = "nginx.conf"; |
71 | 71 |
72 ngx_conf_parse(&conf, &conf_file); | 72 if (ngx_conf_parse(&conf, &conf_file) != NGX_CONF_OK) { |
73 #endif | 73 exit(1); |
74 | 74 } |
75 ngx_test_null(ngx_listening_sockets, | 75 |
76 ngx_create_array(ngx_pool, 10, sizeof(ngx_listen_t)), 1); | 76 #if 0 |
77 | |
78 /* STUB */ | 77 /* STUB */ |
79 /* TODO: init chain of global modules (like ngx_http.c), | 78 /* TODO: init chain of global modules (like ngx_http.c), |
80 they would init its modules and ngx_listening_sockets */ | 79 they would init its modules and ngx_listening_sockets */ |
81 ngx_http_init(ngx_pool, &ngx_log); | 80 ngx_http_init(ngx_pool, &ngx_log); |
81 #endif | |
82 | 82 |
83 ngx_open_listening_sockets(&ngx_log); | 83 ngx_open_listening_sockets(&ngx_log); |
84 | 84 |
85 /* TODO: daemon */ | 85 /* TODO: daemon */ |
86 | 86 |
87 /* TODO: fork */ | 87 /* TODO: fork */ |
88 | 88 |
89 ngx_pre_thread(ngx_listening_sockets, ngx_pool, &ngx_log); | 89 ngx_pre_thread(&ngx_listening_sockets, ngx_pool, &ngx_log); |
90 | 90 |
91 /* TODO: threads */ | 91 /* TODO: threads */ |
92 | 92 |
93 /* STUB */ | 93 /* STUB */ |
94 ngx_worker(&ngx_log); | 94 ngx_worker(&ngx_log); |
123 | 123 |
124 for (times = 10; times; times--) { | 124 for (times = 10; times; times--) { |
125 failed = 0; | 125 failed = 0; |
126 | 126 |
127 /* for each listening socket */ | 127 /* for each listening socket */ |
128 ls = (ngx_listen_t *) ngx_listening_sockets->elts; | 128 ls = (ngx_listen_t *) ngx_listening_sockets.elts; |
129 for (i = 0; i < ngx_listening_sockets->nelts; i++) { | 129 for (i = 0; i < ngx_listening_sockets.nelts; i++) { |
130 | 130 |
131 if (ls[i].done) | 131 if (ls[i].bound) |
132 continue; | 132 continue; |
133 | 133 |
134 if (ls[i].inherited) { | 134 if (ls[i].inherited) { |
135 | 135 |
136 /* TODO: close on exit */ | 136 /* TODO: close on exit */ |
137 /* TODO: nonblocking */ | 137 /* TODO: nonblocking */ |
138 /* TODO: deferred accept */ | 138 /* TODO: deferred accept */ |
139 | 139 |
140 ls[i].done = 1; | 140 ls[i].bound = 1; |
141 continue; | 141 continue; |
142 } | 142 } |
143 | 143 |
144 s = ngx_socket(ls[i].family, ls[i].type, ls[i].protocol, | 144 s = ngx_socket(ls[i].family, ls[i].type, ls[i].protocol, |
145 ls[i].flags); | 145 ls[i].flags); |
192 } | 192 } |
193 | 193 |
194 /* TODO: deferred accept */ | 194 /* TODO: deferred accept */ |
195 | 195 |
196 ls[i].fd = s; | 196 ls[i].fd = s; |
197 ls[i].done = 1; | 197 ls[i].bound = 1; |
198 } | 198 } |
199 | 199 |
200 if (!failed) | 200 if (!failed) |
201 break; | 201 break; |
202 | 202 |