# HG changeset patch # User Igor Sysoev # Date 1057122113 0 # Node ID adc093f880c8546c0596f3e2b03d5213a34d3929 # Parent b5be4b0448d30772f5bdfc48707c56866d4e9ce2 nginx-0.0.1-2003-07-02-09:01:53 import diff --git a/src/core/nginx.c b/src/core/nginx.c --- 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); - continue; - } - - new_cycle->pool = pool; - - if (ngx_init_conf(new_cycle, cycle->log) == NGX_ERROR) { - ngx_destroy_pool(new_cycle->pool); + new_cycle = ngx_init_cycle(cycle, cycle->log); + if (new_cycle) == NULL) { 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 *o } 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 *o 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 *o } } + ls = old_cycle->listening.elts; + for (i = 0; i < old_cycle->listening.nelts; i++) { + if (ls[i].remain) { + 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); + } + } + + file = old_cycle->open_files.elts; + for (i = 0; i < cycle->old_open_files.nelts; i++) { + 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); + } + } + new_cycle->log = ???; pool->log = ???; - return cycle; + ngx_destroy_pool(old_cycle->pool); - - + 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; - } - } - } - - } else { - failed = 1; - } - - if (failed) { - for (i = 0; ngx_modules[i]; i++) { - if (ngx_modules[i]->rollback_module) { - ngx_modules[i]->rollback_module(pool); - } - } - - return NGX_ERROR; - - } else { - for (i = 0; ngx_modules[i]; i++) { - if (ngx_modules[i]->commit_module) { - ngx_modules[i]->commit_module(pool); - } - } - } - - return NGX_OK; -} - - -#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) {