mirror of
https://github.com/nginx/nginx.git
synced 2025-01-22 14:23:18 -06:00
nginx-0.0.1-2003-07-02-09:01:53 import
This commit is contained in:
parent
6abfde6557
commit
bc5c28714a
228
src/core/nginx.c
228
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) {
|
||||
new_cycle = ngx_init_cycle(cycle, cycle->log);
|
||||
if (new_cycle) == 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);
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
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 = ???;
|
||||
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user