diff src/core/nginx.c @ 0:4eff17414a43

nginx-0.0.1-2002-08-06-20:39:45 import The first code that uses "ngx_" prefix, the previous one used "gx_" prefix. At that point the code is not yet usable. The first draft ideas are dated back to 23.10.2001.
author Igor Sysoev <igor@sysoev.ru>
date Tue, 06 Aug 2002 16:39:45 +0000
parents
children d220029ac7f3
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/core/nginx.c
@@ -0,0 +1,118 @@
+
+#include <nginx.h>
+
+#include <ngx_config.h>
+#include <ngx_string.h>
+#include <ngx_log.h>
+#include <ngx_alloc.h>
+#include <ngx_server.h>
+#include <ngx_connection.h>
+#include <ngx_listen.h>
+
+/*
+#include <ngx_http.h>
+*/
+
+
+#if !(WIN32)
+static int ngx_options(int argc, char *const *argv);
+#endif
+
+char *ngx_root = "/home/is/work/xml/xml/html";
+
+int ngx_http_init_connection(void *data);
+
+
+int ngx_max_conn = 512;
+struct sockaddr_in ngx_addr = {0, AF_INET, 0, 0, 0};
+
+
+ngx_pool_t   ngx_pool;
+ngx_log_t    ngx_log;
+ngx_server_t ngx_server;
+
+
+int main(int argc, char *const *argv)
+{
+    char addr_text[22];
+    ngx_socket_t fd;
+    ngx_listen_t ls;
+#if (WIN32)
+    WSADATA      wsd;
+#endif
+
+
+    ngx_log.log_level = NGX_LOG_DEBUG;
+    ngx_pool.log = &ngx_log;
+    ngx_addr.sin_port = htons(8000);
+    ngx_addr.sin_family = AF_INET;
+
+#if !(WIN32)
+    if (ngx_options(argc, argv) == -1)
+        ngx_log_error(NGX_LOG_EMERG, (&ngx_log), 0, "invalid argument");
+#endif
+
+    ngx_log_debug((&ngx_log), "%d, %s:%d" _ ngx_max_conn _
+                 inet_ntoa(ngx_addr.sin_addr) _ ntohs(ngx_addr.sin_port));
+
+#if (WIN32)
+    if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
+        ngx_log_error(NGX_LOG_EMERG, (&ngx_log), ngx_socket_errno,
+                      "WSAStartup failed");
+#endif
+
+    ngx_snprintf(ngx_cpystrn(addr_text, inet_ntoa(ngx_addr.sin_addr), 16),
+                 7, ":%d", ntohs(ngx_addr.sin_port));
+    fd = ngx_listen((struct sockaddr *) &ngx_addr, -1, &ngx_log, addr_text);
+
+    ngx_server.buff_size = 1024;
+    ngx_server.handler = ngx_http_init_connection;
+
+    /* daemon */
+
+    ls.fd = fd;
+    ls.server = &ngx_server;
+    ls.log = &ngx_log;
+
+    /* fork */
+
+    ngx_worker(&ls, 1, &ngx_pool, &ngx_log);
+}
+
+#if !(WIN32)
+extern char *optarg;
+
+static int ngx_options(int argc, char *const *argv)
+{
+    char ch, *pos;
+    int port;
+
+    while ((ch = getopt(argc, argv, "l:c:")) != -1) {
+        switch (ch) {
+        case 'l':
+            if (pos = strchr(optarg, ':')) {
+                *(pos) = '\0';
+                if ((port = atoi(pos + 1)) <= 0)
+                    return -1;
+                ngx_addr.sin_port = htons(port);
+            }
+
+            if ((ngx_addr.sin_addr.s_addr = inet_addr(optarg)) == INADDR_NONE)
+                return -1;
+            break;
+
+        case 'c':
+            if ((ngx_max_conn = atoi(optarg)) <= 0)
+                return -1;
+            break;
+
+        case '?':
+        default:
+            return -1;
+        }
+
+    }
+
+    return 0;
+}
+#endif