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