aboutsummaryrefslogtreecommitdiff
path: root/src/core/nginx.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-07-02 05:01:53 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-07-02 05:01:53 +0000
commitbc5c28714a2db990e9d1bfca66480efeb7b6052a (patch)
tree8ea2137521bbe117f3a478a9561142eba47647f3 /src/core/nginx.c
parent6abfde65573d145325a908417d5301d4766c6af8 (diff)
downloadnginx-bc5c28714a2db990e9d1bfca66480efeb7b6052a.tar.gz
nginx-bc5c28714a2db990e9d1bfca66480efeb7b6052a.zip
nginx-0.0.1-2003-07-02-09:01:53 import
Diffstat (limited to 'src/core/nginx.c')
-rw-r--r--src/core/nginx.c218
1 files changed, 80 insertions, 138 deletions
diff --git a/src/core/nginx.c b/src/core/nginx.c
index b96739321..b011df390 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -27,13 +27,12 @@ ngx_array_t ngx_listening_sockets;
int main(int argc, char *const *argv)
{
- int i;
- ngx_str_t conf_file;
- ngx_log_t *log;
- ngx_pool_t *pool;
- ngx_conf_t conf;
+ ngx_str_t conf_file;
+ ngx_log_t *log;
+ ngx_conf_t conf;
+ ngx_cycle_t *cycle;
- ngx_max_sockets = -1;
+ /* TODO */ ngx_max_sockets = -1;
log = ngx_log_init_errlog();
@@ -46,11 +45,8 @@ int main(int argc, char *const *argv)
ngx_modules[i]->index = ngx_max_module++;
}
- ngx_test_null(pool, ngx_create_pool(16 * 1024, log), 1);
- ngx_test_null(cycle, ngx_pcalloc(pool, sizeof(ngx_cycle_t)), 1);
- cycle->pool = pool;
-
- if (ngx_init_conf(cycle) == NGX_ERROR) {
+ cycle = ngx_init_cycle(NULL, log);
+ if (cycle == NULL) {
return 1;
}
@@ -70,62 +66,11 @@ int main(int argc, char *const *argv)
worker(cycle->log);
- pool = ngx_create_pool(16 * 1024, cycle->log);
-
- if (pool == NULL) {
- continue;
- }
-
- new_cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
-
- if (new_cycle == NULL) {
- ngx_destroy_pool(pool);
+ new_cycle = ngx_init_cycle(cycle, cycle->log);
+ if (new_cycle) == NULL) {
continue;
}
- new_cycle->pool = pool;
-
- if (ngx_init_conf(new_cycle, cycle->log) == NGX_ERROR) {
- ngx_destroy_pool(new_cycle->pool);
- continue;
- }
-
- nls = new_cycle->listening.elts;
- for (n = 0; n < new_cycle->listening.nelts; n++) {
- ls = cycle->listening.elts;
- for (i = 0; i < cycle->listening.nelts; i++) {
- if (ngx_memcmp(nls[n].sockaddr,
- ls[i].sockaddr, ls[i].socklen) == 0)
- {
- nls[n].fd = ls[i].fd;
- break;
- }
- }
-
- if (nls[n].fd == -1) {
- nls[n].new = 1;
- }
- }
-
- if (ngx_open_listening_sockets(new_cycle) == NGX_ERROR) {
- for (n = 0; n < new_cycle->listening.nelts; n++) {
- if (nls[n].new && nls[n].fd != -1) {
- if (ngx_close_socket(nls[n].fd) == -1)
- ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
- ngx_close_socket_n " %s failed",
- nls[n].addr_text.data);
- }
- }
- }
-
- ngx_destroy_pool(new_cycle->pool);
- continue;
- }
-
- new_cycle->log = new log;
-
- ngx_destroy_pool(cycle->pool);
-
cycle = new_cycle;
break;
}
@@ -137,10 +82,12 @@ int main(int argc, char *const *argv)
static int ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log)
{
- int n;
- ngx_conf_t conf;
- ngx_pool_t *pool;
- ngx_cycle_t *cycle;
+ int i, n;
+ ngx_conf_t conf;
+ ngx_pool_t *pool;
+ ngx_cycle_t *cycle;
+ ngx_open_file_t *file;
+ ngx_listening_t *ls, *nls;
pool = ngx_create_pool(16 * 1024, log);
@@ -240,6 +187,28 @@ static int ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log)
}
if (!failed) {
+ ls = old_cycle->listening.elts;
+ for (i = 0; i < old_cycle->listening.nelts; i++) {
+ ls[i].remain = 0;
+ }
+
+ nls = cycle->listening.elts;
+ for (n = 0; n < cycle->listening.nelts; n++) {
+ for (i = 0; i < old_cycle->listening.nelts; i++) {
+ if (ngx_memcmp(nls[n].sockaddr,
+ ls[i].sockaddr, ls[i].socklen) == 0)
+ {
+ nls[n].fd = ls[i].fd;
+ ls[i].remain = 1;
+ break;
+ }
+ }
+
+ if (nls[n].fd == -1) {
+ nls[n].new = 1;
+ }
+ }
+
if (ngx_open_listening_sockets(new_cycle) == NGX_ERROR) {
failed = 1;
}
@@ -257,23 +226,27 @@ static int ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log)
file = cycle->open_files.elts;
for (i = 0; i < cycle->open_files.nelts; i++) {
- if (file->fd != NGX_INVALID_FILE) {
- if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
- ngx_close_file_n " \"%s\" failed",
- file->name.data);
- }
+ if (file->fd == NGX_INVALID_FILE) {
+ continue;
+ }
+
+ if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
+ ngx_close_file_n " \"%s\" failed",
+ file->name.data);
}
}
ls[i] = cycle->listening.elts;
for (i = 0; i < cycle->listening.nelts; i++) {
- if (ls[i].new && ls[i].fd != -1) {
- if (ngx_close_socket(ls[i].fd) == -1)
- ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
- ngx_close_socket_n " %s failed",
- ls[i].addr_text.data);
- }
+ if (ls[i].new && ls[i].fd == -1) {
+ continue;
+ }
+
+ if (ngx_close_socket(ls[i].fd) == -1)
+ ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
+ ngx_close_socket_n " %s failed",
+ ls[i].addr_text.data);
}
}
@@ -291,76 +264,43 @@ static int ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log)
}
}
- new_cycle->log = ???;
- pool->log = ???;
-
- return cycle;
-
-
-
-
-
-
-----------------
-
- ngx_init_array(cycle->listening, cycle->pool, 10, sizeof(ngx_listening_t),
- NGX_ERROR);
-
- ngx_memzero(&conf, sizeof(ngx_conf_t));
-
- ngx_test_null(conf.args,
- ngx_create_array(cycle->pool, 10, sizeof(ngx_str_t)),
- NGX_ERROR);
-
- ngx_test_null(cycle->conf_ctx,
- ngx_pcalloc(cycle->pool, ngx_max_module * sizeof(void *)),
- NGX_ERROR);
-
- conf.ctx = cycle->conf_ctx;
- conf.cycle = cycle;
- /* STUB */ conf.pool = cycle->pool; conf.log = cycle->log;
- conf.module_type = NGX_CORE_MODULE;
- conf.cmd_type = NGX_MAIN_CONF;
-
- conf_file.len = sizeof(NGINX_CONF) - 1;
- conf_file.data = NGINX_CONF;
-
- if (ngx_conf_parse(&conf, &conf_file) == NGX_CONF_OK) {
- for (i = 0; ngx_modules[i]; i++) {
- if (ngx_modules[i]->init_module) {
- if (ngx_modules[i]->init_module(pool) == NGX_ERROR) {
- failed = 1;
- break;
- }
- }
+ ls = old_cycle->listening.elts;
+ for (i = 0; i < old_cycle->listening.nelts; i++) {
+ if (ls[i].remain) {
+ continue;
}
- } else {
- failed = 1;
+ if (ngx_close_socket(ls[i].fd) == -1)
+ ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
+ ngx_close_socket_n " %s failed",
+ ls[i].addr_text.data);
+ }
}
- if (failed) {
- for (i = 0; ngx_modules[i]; i++) {
- if (ngx_modules[i]->rollback_module) {
- ngx_modules[i]->rollback_module(pool);
- }
+ file = old_cycle->open_files.elts;
+ for (i = 0; i < cycle->old_open_files.nelts; i++) {
+ if (file->fd == NGX_INVALID_FILE) {
+ continue;
}
- return NGX_ERROR;
-
- } else {
- for (i = 0; ngx_modules[i]; i++) {
- if (ngx_modules[i]->commit_module) {
- ngx_modules[i]->commit_module(pool);
- }
+ if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
+ ngx_close_file_n " \"%s\" failed",
+ file->name.data);
}
}
- return NGX_OK;
+ new_cycle->log = ???;
+ pool->log = ???;
+
+ ngx_destroy_pool(old_cycle->pool);
+
+ return cycle;
}
-#endif
+
+#else
int main(int argc, char *const *argv)
@@ -454,6 +394,8 @@ int main(int argc, char *const *argv)
return 0;
}
+#endif
+
static int ngx_open_listening_sockets(ngx_log_t *log)
{