changeset 108:adc093f880c8

nginx-0.0.1-2003-07-02-09:01:53 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 02 Jul 2003 05:01:53 +0000
parents b5be4b0448d3
children a9bc21d63fe4
files src/core/nginx.c
diffstat 1 files changed, 85 insertions(+), 143 deletions(-) [+]
line wrap: on
line diff
--- 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)
 {