Mercurial > hg > nginx
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