diff src/http/ngx_http_config.c @ 41:59e7c7f30d49

nginx-0.0.1-2002-12-26-19:26:23 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 26 Dec 2002 16:26:23 +0000
parents d45effe5854c
children cd035a94e0b6
line wrap: on
line diff
--- a/src/http/ngx_http_config.c
+++ b/src/http/ngx_http_config.c
@@ -3,58 +3,106 @@
 #include <ngx_core.h>
 #include <ngx_config_file.h>
 #include <ngx_http.h>
+#include <ngx_http_core.h>
+#include <ngx_http_config.h>
 #include <ngx_http_write_filter.h>
 #include <ngx_http_output_filter.h>
 #include <ngx_http_index_handler.h>
 
 
-int ngx_max_module;
-
-int (*ngx_http_top_header_filter) (ngx_http_request_t *r);
-
-/* STUB: gobal srv and loc conf */
+/* STUB */
 void **ngx_srv_conf;
 void **ngx_loc_conf;
+/**/
 
-#if 0
-int ngx_http_block(ngx_conf_t *cf)
+
+static int ngx_http_block(ngx_conf_t *cf, ngx_command_t *cmd, char *dummy);
+
+
+void *null_loc_conf;
+
+
+static ngx_command_t  ngx_http_commands[] = {
+
+    {ngx_string("http"),
+     NGX_CONF_BLOCK|NGX_CONF_NOARGS,
+     ngx_http_block,
+     0,
+     0},
+
+    {ngx_string(""), 0, NULL, 0, 0}
+};
+
+
+static ngx_http_module_t  ngx_http_module_ctx = {
+    NGX_HTTP_MODULE,
+
+    NULL,                                  /* create server config */
+    NULL,                                  /* create location config */
+
+    NULL,                                  /* translate handler */
+
+    NULL,                                  /* output header filter */
+    NULL,                                  /* next output header filter */
+    NULL,                                  /* output body filter */
+    NULL                                   /* next output body filter */
+};
+
+
+ngx_module_t  ngx_http_module = {
+    &ngx_http_module_ctx,                  /* module context */
+    ngx_http_commands,                     /* module directives */
+    0,                                     /* module type */
+    NULL                                   /* init module */
+};
+
+
+static int ngx_http_block(ngx_conf_t *cf, ngx_command_t *cmd, char *dummy)
 {
+    int  i, j;
+    ngx_http_module_t    *module;
     ngx_http_conf_ctx_t  *ctx;
 
-    ngx_test_null(ctx,
-                  ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
+    for (i = 0; ngx_modules[i]; i++) {
+        if (ngx_modules[i]->type != NGX_HTTP_MODULE_TYPE) {
+            continue;
+        }
+
+        module = (ngx_http_module_t *) ngx_modules[i]->ctx;
+        module->index = i;
+    }
+
+    ngx_http_max_module = i;
+
+    ngx_test_null(null_loc_conf,
+                  ngx_pcalloc(cf->pool, sizeof(void *) * ngx_http_max_module),
                   NGX_ERROR);
 
-#if 0
-    /* null server config */
-    ngx_test_null(ctx->srv_conf,
-                  ngx_pcalloc(cf->pool, sizeof(void *) * ngx_max_module),
-                  NGX_ERROR);
-#endif
+    ctx->srv_conf = NULL;
+    ctx->loc_conf = null_loc_conf;
 
-    /* null location config */
-    ngx_test_null(ctx->loc_conf,
-                  ngx_pcalloc(cf->pool, sizeof(void *) * ngx_max_module),
-                  NGX_ERROR);
+    for (i = 0, j = 0; ngx_modules[i]; i++) {
+        if (ngx_modules[i]->type != NGX_HTTP_MODULE_TYPE) {
+            continue;
+        }
 
-    for (i = 0; modules[i]; i++) {
-#if 0
-        if (modules[i]->create_srv_conf)
-            ngx_test_null(ctx->srv_conf[i],
-                          modules[i]->create_srv_conf(cf->pool),
+        module = (ngx_http_module_t *) ngx_modules[i]->ctx;
+        module->index = i;
+        if (module->create_loc_conf) {
+            ngx_test_null(null_loc_conf,
+                          module->create_loc_conf(cf->pool),
                           NGX_ERROR);
-#endif
-
-        if (modules[i]->create_loc_conf)
-            ngx_test_null(ctx->loc_conf[i],
-                          modules[i]->create_loc_conf(cf->pool),
-                          NGX_ERROR);
+            j++;
+        }
     }
 
     cf->ctx = ctx;
-    return ngx_conf_parse(cf);
+    cf->type = NGX_HTTP_MODULE_TYPE;
+    return ngx_conf_parse(cf, NULL);
 }
 
+
+#if 0
 int ngx_server_block(ngx_conf_t *cf)
 {
     ngx_http_conf_ctx_t  *ctx, *prev;
@@ -155,21 +203,29 @@ int ngx_location_block(ngx_conf_t *cf)
 
 #endif
 
-int ngx_http_config_modules(ngx_pool_t *pool, ngx_http_module_t **modules)
+
+int ngx_http_config_modules(ngx_pool_t *pool, ngx_module_t **modules)
 {
     int i;
+    ngx_http_module_t  *module;
 
     for (i = 0; modules[i]; i++) {
-        modules[i]->index = i;
+        if (modules[i]->type != NGX_HTTP_MODULE_TYPE) {
+            continue;
+        }
+
+        module = (ngx_http_module_t *) modules[i]->ctx;
+        module->index = i;
     }
 
-    ngx_max_module = i;
+    ngx_http_max_module = i;
 
+#if 0
     ngx_test_null(ngx_srv_conf,
-                  ngx_pcalloc(pool, sizeof(void *) * ngx_max_module),
+                  ngx_pcalloc(pool, sizeof(void *) * ngx_http_max_module),
                   NGX_ERROR);
     ngx_test_null(ngx_loc_conf,
-                  ngx_pcalloc(pool, sizeof(void *) * ngx_max_module),
+                  ngx_pcalloc(pool, sizeof(void *) * ngx_http_max_module),
                   NGX_ERROR);
 
     for (i = 0; modules[i]; i++) {
@@ -179,94 +235,36 @@ int ngx_http_config_modules(ngx_pool_t *
         if (modules[i]->create_loc_conf)
             ngx_loc_conf[i] = modules[i]->create_loc_conf(pool);
     }
+#endif
 }
 
-int ngx_http_init_modules(ngx_pool_t *pool, ngx_http_module_t **modules)
+
+void ngx_http_init_filters(ngx_pool_t *pool, ngx_module_t **modules)
 {
-    int i;
-
-    for (i = 0; modules[i]; i++) {
-        if (modules[i]->init_module)
-            modules[i]->init_module(pool);
-    }
-}
-
-int ngx_http_init_filters(ngx_pool_t *pool, ngx_http_module_t **modules)
-{
-    int i;
+    int  i;
+    ngx_http_module_t  *module;
     int (*ohf)(ngx_http_request_t *r);
     int (*obf)(ngx_http_request_t *r, ngx_chain_t *ch);
 
     ohf = NULL;
+    obf = NULL;
 
     for (i = 0; modules[i]; i++) {
-        if (modules[i]->output_header_filter) {
-            modules[i]->next_output_header_filter = ohf;
-            ohf = modules[i]->output_header_filter;
+        if (modules[i]->type != NGX_HTTP_MODULE_TYPE) {
+            continue;
+        }
+
+        module = (ngx_http_module_t *) modules[i]->ctx;
+        if (module->output_header_filter) {
+            module->next_output_header_filter = ohf;
+            ohf = module->output_header_filter;
+        }
+
+        if (module->output_body_filter) {
+            module->next_output_body_filter = obf;
+            obf = module->output_body_filter;
         }
     }
 
     ngx_http_top_header_filter = ohf;
-
-    obf = NULL;
-
-    for (i = 0; modules[i]; i++) {
-        if (modules[i]->output_body_filter) {
-            modules[i]->next_output_body_filter = obf;
-            obf = modules[i]->output_body_filter;
-        }
-    }
 }
-
-
-/* STUB */
-ngx_http_output_filter_set_stub(ngx_pool_t *pool, ngx_http_module_t **modules)
-{
-    int i;
-    ngx_command_t *cmd;
-
-    for (i = 0; modules[i]; i++) {
-        if (modules[i] == &ngx_http_output_filter_module) {
-            for (cmd = modules[i]->commands; cmd->name; cmd++) {
-                if (strcmp(cmd->name, "output_buffer") == 0) {
-                    cmd->set(ngx_loc_conf[i], cmd->offset, "32768");
-                }
-            }
-        }
-    }
-}
-
-ngx_http_write_filter_set_stub(ngx_pool_t *pool, ngx_http_module_t **modules)
-{
-    int i;
-    ngx_command_t *cmd;
-
-    for (i = 0; modules[i]; i++) {
-        if (modules[i] == &ngx_http_write_filter_module) {
-            for (cmd = modules[i]->commands; cmd->name; cmd++) {
-                if (strcmp(cmd->name, "write_buffer") == 0) {
-                    cmd->set(ngx_loc_conf[i], cmd->offset, "1500");
-                }
-            }
-        }
-    }
-}
-
-ngx_http_index_set_stub(ngx_pool_t *pool, ngx_http_module_t **modules)
-{
-    int i;
-    ngx_str_t index;
-    ngx_command_t *cmd;
-
-    for (i = 0; modules[i]; i++) {
-        if (modules[i] == &ngx_http_index_module) {
-            for (cmd = modules[i]->commands; cmd->name; cmd++) {
-                if (strcmp(cmd->name, "index") == 0) {
-                    index.len = sizeof("index.html") - 1;
-                    index.data = "index.html";
-                    cmd->set(pool, ngx_loc_conf[i], &index);
-                }
-            }
-        }
-    }
-}