nginx-0.0.1-2002-12-26-10:24:21 import
diff --git a/src/http/ngx_http.h b/src/http/ngx_http.h
index c3e0620..61ac548 100644
--- a/src/http/ngx_http.h
+++ b/src/http/ngx_http.h
@@ -180,23 +180,32 @@
 } ngx_http_log_ctx_t;
 
 
+typedef int (*ngx_http_output_header_filter_p)(ngx_http_request_t *r);
+
+typedef int (*ngx_http_output_body_filter_p)
+                                   (ngx_http_request_t *r, ngx_chain_t *chain);
+
+
+
 typedef struct {
     int               index;
 
     void           *(*create_srv_conf)(ngx_pool_t *p);
     void           *(*create_loc_conf)(ngx_pool_t *p);
-    ngx_command_t    *commands;
-
-    int             (*init_module)(ngx_pool_t *p);
 
     int             (*translate_handler)(ngx_http_request_t *r);
 
     int             (*output_header_filter) (ngx_http_request_t *r);
     int             (*next_output_header_filter) (ngx_http_request_t *r);
 
+    ngx_http_output_body_filter_p  output_body_filter;
+    ngx_http_output_body_filter_p  next_output_body_filter;
+
+#if 0
     int             (*output_body_filter)();
     int             (*next_output_body_filter)
                                       (ngx_http_request_t *r, ngx_chain_t *ch);
+#endif
 
 #if 0
     int             (*next_output_body_filter)(int (**next_filter)
@@ -205,10 +214,19 @@
 } ngx_http_module_t;
 
 
-#define NGX_HTTP_MODULE  0
+#define NGX_HTTP_MODULE        0x80000000
 
+#define NGX_HTTP_MODULE_TYPE   0x50545448   /* "HTTP" */
+
+
+/* STUB */
 #define ngx_get_module_loc_conf(r, module)  r->loc_conf[module.index]
 #define ngx_get_module_ctx(r, module)  r->ctx[module.index]
+/**/
+
+#define ngx_http_get_module_srv_conf(r, module)  r->srv_conf[module.index]
+#define ngx_http_get_module_loc_conf(r, module)  r->loc_conf[module.index]
+#define ngx_http_get_module_ctx(r, module)       r->ctx[module.index]
 
 #define ngx_http_create_ctx(r, cx, module, size)                              \
             do {                                                              \
diff --git a/src/http/ngx_http_modules.c b/src/http/ngx_http_modules.c
deleted file mode 100644
index 5b814ba..0000000
--- a/src/http/ngx_http_modules.c
+++ /dev/null
@@ -1,23 +0,0 @@
-
-#include <ngx_http.h>
-
-extern ngx_http_module_t ngx_http_header_filter_module;
-
-extern ngx_http_module_t ngx_http_write_filter_module;
-extern ngx_http_module_t ngx_http_output_filter_module;
-
-extern ngx_http_module_t ngx_http_core_module;
-extern ngx_http_module_t ngx_http_index_module;
-
-ngx_http_module_t *ngx_http_modules[] = {
-
-    &ngx_http_header_filter_module,
-
-    &ngx_http_write_filter_module,
-    &ngx_http_output_filter_module,
-
-    &ngx_http_index_module,
-    &ngx_http_core_module,
-
-    NULL
-};
diff --git a/src/http/ngx_http_output_filter.c b/src/http/ngx_http_output_filter.c
index 8c374cb..5a33d53 100644
--- a/src/http/ngx_http_output_filter.c
+++ b/src/http/ngx_http_output_filter.c
@@ -10,51 +10,48 @@
 #include <ngx_http_output_filter.h>
 
 
-int ngx_http_output_filter(ngx_http_request_t *r, ngx_hunk_t *hunk);
+static int ngx_http_output_filter(ngx_http_request_t *r, ngx_hunk_t *hunk);
 static int ngx_http_output_filter_copy_hunk(ngx_hunk_t *dst, ngx_hunk_t *src);
-#if 0
-static int ngx_http_output_filter_init(
-            int (**next_filter)(ngx_http_request_t *r, ngx_chain_t *ch));
-#endif
 static void *ngx_http_output_filter_create_conf(ngx_pool_t *pool);
 
 
-static ngx_command_t ngx_http_output_filter_commands[] = {
+static ngx_command_t  ngx_http_output_filter_commands[] = {
 
-    {"output_buffer", ngx_conf_set_size_slot,
+    {ngx_string("output_buffer"),
+     ngx_conf_set_size_slot,
      offsetof(ngx_http_output_filter_conf_t, hunk_size),
-     NGX_HTTP_LOC_CONF, NGX_CONF_TAKE1,
-     "set output filter buffer size"},
+     NGX_HTTP_LOC_CONF,
+     NGX_CONF_TAKE1},
 
-    {NULL}
-
+    {ngx_string(""), NULL, 0, 0, 0}
 };
 
 
-ngx_http_module_t  ngx_http_output_filter_module = {
+static ngx_http_module_t  ngx_http_output_filter_module_ctx = {
     NGX_HTTP_MODULE,
 
     NULL,                                  /* create server config */
     ngx_http_output_filter_create_conf,    /* create location config */
-    ngx_http_output_filter_commands,       /* module directives */
 
-    NULL,                                  /* init module */
     NULL,                                  /* translate handler */
 
     NULL,                                  /* output header filter */
     NULL,                                  /* next output header filter */
-    ngx_http_output_filter,                /* output body filter */
+    (ngx_http_output_body_filter_p) ngx_http_output_filter,
+                                           /* output body filter */
     NULL                                   /* next output body filter */
 };
 
 
-#if 0
-static int (*ngx_http_output_next_filter)(ngx_http_request_t *r,
-                                          ngx_chain_t *ch);
-#endif
+ngx_module_t  ngx_http_output_filter_module = {
+    &ngx_http_output_filter_module_ctx,    /* module context */
+    ngx_http_output_filter_commands,       /* module directives */
+    NGX_HTTP_MODULE_TYPE,                  /* module type */
+    NULL                                   /* init module */
+};
 
 
-int ngx_http_output_filter(ngx_http_request_t *r, ngx_hunk_t *hunk)
+static int ngx_http_output_filter(ngx_http_request_t *r, ngx_hunk_t *hunk)
 {
     int      rc, once;
     size_t   size;
@@ -64,21 +61,18 @@
     ngx_http_output_filter_conf_t *conf;
 
     ctx = (ngx_http_output_filter_ctx_t *)
-                            ngx_get_module_ctx(r->main ? r->main : r,
-                                                ngx_http_output_filter_module);
+                    ngx_http_get_module_ctx(r->main ? r->main : r,
+                                            ngx_http_output_filter_module_ctx);
 
     if (ctx == NULL) {
         ngx_http_create_ctx(r, ctx,
-                            ngx_http_output_filter_module,
+                            ngx_http_output_filter_module_ctx,
                             sizeof(ngx_http_output_filter_ctx_t));
-
-#if 0
-        ctx->next_filter = ngx_http_output_next_filter;
-#endif
     }
 
-    if (hunk && (hunk->type & NGX_HUNK_LAST))
+    if (hunk && (hunk->type & NGX_HUNK_LAST)) {
         ctx->last = 1;
+    }
 
     for (once = 1; once || ctx->in; once = 0) {
 
@@ -87,19 +81,17 @@
 
             /* add hunk to input chain */
             if (once && hunk) {
-                for (ce = ctx->in; ce->next; ce = ce->next)
+                for (ce = ctx->in; ce->next; ce = ce->next) {
                     /* void */ ;
+                }
 
                 ngx_add_hunk_to_chain(ce->next, hunk, r->pool, NGX_ERROR);
             }
 
             /* our hunk is still busy */
             if (ctx->hunk->pos.mem < ctx->hunk->last.mem) {
-                rc = ngx_http_output_filter_module.
+                rc = ngx_http_output_filter_module_ctx.
                                               next_output_body_filter(r, NULL);
-#if 0
-                rc = ctx->next_filter(r, NULL);
-#endif
 
             /* our hunk is free */
             } else {
@@ -107,11 +99,13 @@
 
                 rc = ngx_http_output_filter_copy_hunk(ctx->hunk, ctx->in->hunk);
 #if (NGX_FILE_AIO_READ)
-                if (rc == NGX_AGAIN)
+                if (rc == NGX_AGAIN) {
                     return rc;
+                }
 #endif
-                if (rc == NGX_ERROR)
+                if (rc == NGX_ERROR) {
                     return rc;
+                }
 
                 /* whole hunk is copied so we send to next filter chain part
                    up to next hunk that need to be copied */
@@ -119,12 +113,15 @@
                     ctx->out.next = ctx->in->next;
 
                     for (ce = ctx->in->next; ce; ce = ce->next) {
-                        if (ce->hunk->type & NGX_HUNK_FILE)
+                        if (ce->hunk->type & NGX_HUNK_FILE) {
                             break;
+                        }
 
                         if ((ce->hunk->type & (NGX_HUNK_MEMORY|NGX_HUNK_MMAP))
                             && (r->filter & NGX_HTTP_FILTER_NEED_TEMP))
+                        {
                             break;
+                        }
                     }
 
                     ctx->out.next = ce;
@@ -133,33 +130,29 @@
                     ctx->out.next = NULL;
                 }
 
-                rc = ngx_http_output_filter_module.
+                rc = ngx_http_output_filter_module_ctx.
                                          next_output_body_filter(r, &ctx->out);
-#if 0
-                rc = ctx->next_filter(r, &ctx->out);
-#endif;
             }
 
             /* delete completed hunks from input chain */
             for (ce = ctx->in; ce; ce = ce->next) {
-                 if (ce->hunk->pos.file == ce->hunk->last.file)
+                 if (ce->hunk->pos.file == ce->hunk->last.file) {
                      ctx->in = ce->next;
+                 }
             }
 
-            if (rc == NGX_OK && ctx->hunk)
+            if (rc == NGX_OK && ctx->hunk) {
                 ctx->hunk->pos.mem = ctx->hunk->last.mem = ctx->hunk->start;
-            else
+            } else {
                 return rc;
+            }
 
         /* input chain is empty */
         } else {
 
             if (hunk == NULL) {
-                rc = ngx_http_output_filter_module.
+                rc = ngx_http_output_filter_module_ctx.
                                               next_output_body_filter(r, NULL);
-#if 0
-                rc = ctx->next_filter(r, NULL);
-#endif;
 
             } else {
 
@@ -175,11 +168,8 @@
                         ngx_add_hunk_to_chain(ctx->in, hunk, r->pool,
                                               NGX_ERROR);
 
-                        rc = ngx_http_output_filter_module.
+                        rc = ngx_http_output_filter_module_ctx.
                                               next_output_body_filter(r, NULL);
-#if 0
-                        rc = ctx->next_filter(r, NULL);
-#endif
 
                     } else {
                         if (ctx->hunk == NULL) {
@@ -187,12 +177,14 @@
                             if (hunk->type & NGX_HUNK_LAST) {
 
                                 conf = (ngx_http_output_filter_conf_t *)
-                                 ngx_get_module_loc_conf(r->main ? r->main : r,
-                                                ngx_http_output_filter_module);
+                                        ngx_http_get_module_loc_conf(
+                                            r->main ? r->main : r,
+                                            ngx_http_output_filter_module_ctx);
 
                                 size = hunk->last.mem - hunk->pos.mem;
-                                if (size > conf->hunk_size)
+                                if (size > conf->hunk_size) {
                                     size = conf->hunk_size;
+                                }
 
                             } else {
                                 size = conf->hunk_size;
@@ -215,21 +207,20 @@
                                 return rc;
                             }
 #endif
-                            if (rc == NGX_ERROR)
+                            if (rc == NGX_ERROR) {
                                 return rc;
+                            }
 
-                            if (hunk->pos.mem < hunk->last.mem)
+                            if (hunk->pos.mem < hunk->last.mem) {
                                 ngx_add_hunk_to_chain(ctx->in, hunk, r->pool,
                                                       NGX_ERROR);
+                            }
 
                             ctx->out.hunk = ctx->hunk;
                             ctx->out.next = NULL;
 
-                            rc = ngx_http_output_filter_module.
+                            rc = ngx_http_output_filter_module_ctx.
                                          next_output_body_filter(r, &ctx->out);
-#if 0
-                            rc = ctx->next_filter(r, &ctx->out);
-#endif
                         }
                     }
 
@@ -237,11 +228,8 @@
                     ctx->out.hunk = hunk;
                     ctx->out.next = NULL;
 
-                    rc = ngx_http_output_filter_module.
+                    rc = ngx_http_output_filter_module_ctx.
                                          next_output_body_filter(r, &ctx->out);
-#if 0
-                    rc = ctx->next_filter(r, &ctx->out);
-#endif
                 }
             }
         }
@@ -250,13 +238,15 @@
             ctx->hunk->pos.mem = ctx->hunk->last.mem = ctx->hunk->start;
     }
 
-    if (rc == NGX_OK && ctx->last)
+    if (rc == NGX_OK && ctx->last) {
         return NGX_OK;
+    }
 
     if (rc == NGX_OK) {
-        if (ctx->hunk)
+        if (ctx->hunk) {
             ctx->hunk->pos.mem = ctx->hunk->last.mem = ctx->hunk->start;
-#if level_event
+        }
+#if (!NGX_ONESHOT_EVENT)
         ngx_del_event(r->connection->write, NGX_WRITE_EVENT);
 #endif
     }
@@ -271,8 +261,9 @@
     ssize_t  n;
 
     size = src->last.mem - src->pos.mem;
-    if (size > dst->end - dst->pos.mem)
+    if (size > dst->end - dst->pos.mem) {
         size = dst->end - dst->pos.mem;
+    }
 
     if (src->type & NGX_HUNK_FILE) {
         n = ngx_read_file(src->file, dst->pos.mem, size, src->pos.file);
@@ -301,10 +292,9 @@
         dst->last.mem += size;
     }
 
-#if 1
-    if (src->type & NGX_HUNK_LAST) 
+    if (src->type & NGX_HUNK_LAST) {
         dst->type |= NGX_HUNK_LAST;
-#endif
+    }
 
     return NGX_OK;
 }
@@ -322,14 +312,3 @@
 
     return conf;
 }
-
-#if 0
-static int ngx_http_output_filter_init(
-            int (**next_filter)(ngx_http_request_t *r, ngx_chain_t *ch))
-{
-    ngx_http_output_next_filter = *next_filter;
-    *next_filter = NULL;
-
-    return NGX_OK;
-}
-#endif
diff --git a/src/http/ngx_http_output_filter.h b/src/http/ngx_http_output_filter.h
index 32af6fe..63807d1 100644
--- a/src/http/ngx_http_output_filter.h
+++ b/src/http/ngx_http_output_filter.h
@@ -14,10 +14,8 @@
     size_t        hunk_size;
 } ngx_http_output_filter_conf_t;
 
+
 typedef struct {
-#if 0
-    int         (*next_filter)(ngx_http_request_t *r, ngx_chain_t *ch);
-#endif
     ngx_hunk_t   *hunk;
     ngx_chain_t  *in;
     ngx_chain_t   out;
@@ -25,9 +23,7 @@
 } ngx_http_output_filter_ctx_t;
 
 
-int ngx_http_output_filter(ngx_http_request_t *r, ngx_hunk_t *hunk);
-
-extern ngx_http_module_t  ngx_http_output_filter_module;
+extern ngx_module_t  ngx_http_output_filter_module;
 
 
 #endif /* _NGX_HTTP_OUTPUT_FILTER_H_INCLUDED_ */