nginx-quic/src/core/nginx.c

119 lines
2.4 KiB
C
Raw Normal View History

#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