mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
nginx-0.0.1-2002-12-19-10:08:55 import
This commit is contained in:
parent
140464d638
commit
8809257531
@ -126,7 +126,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
ls[i].flags);
|
ls[i].flags);
|
||||||
if (s == -1) {
|
if (s == -1) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||||
ngx_socket_n " %s falied", ls[i].addr_text);
|
ngx_socket_n " %s falied", ls[i].addr_text.data);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
(const void *) &reuseaddr, sizeof(int)) == -1) {
|
(const void *) &reuseaddr, sizeof(int)) == -1) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||||
"setsockopt(SO_REUSEADDR) %s failed",
|
"setsockopt(SO_REUSEADDR) %s failed",
|
||||||
ls[i].addr_text);
|
ls[i].addr_text.data);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
if (ngx_nonblocking(s) == -1) {
|
if (ngx_nonblocking(s) == -1) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||||
ngx_nonblocking_n " %s failed",
|
ngx_nonblocking_n " %s failed",
|
||||||
ls[i].addr_text);
|
ls[i].addr_text.data);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,7 +152,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
if (bind(s, ls[i].sockaddr, ls[i].socklen) == -1) {
|
if (bind(s, ls[i].sockaddr, ls[i].socklen) == -1) {
|
||||||
err = ngx_socket_errno;
|
err = ngx_socket_errno;
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, err,
|
ngx_log_error(NGX_LOG_EMERG, log, err,
|
||||||
"bind() to %s failed", ls[i].addr_text);
|
"bind() to %s failed", ls[i].addr_text.data);
|
||||||
|
|
||||||
if (err != NGX_EADDRINUSE)
|
if (err != NGX_EADDRINUSE)
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -160,7 +160,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
if (ngx_close_socket(s) == -1)
|
if (ngx_close_socket(s) == -1)
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||||
ngx_close_socket_n " %s failed",
|
ngx_close_socket_n " %s failed",
|
||||||
ls[i].addr_text);
|
ls[i].addr_text.data);
|
||||||
|
|
||||||
failed = 1;
|
failed = 1;
|
||||||
continue;
|
continue;
|
||||||
@ -168,7 +168,7 @@ static void ngx_open_listening_sockets(ngx_log_t *log)
|
|||||||
|
|
||||||
if (listen(s, ls[i].backlog) == -1) {
|
if (listen(s, ls[i].backlog) == -1) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||||
"listen() to %s failed", ls[i].addr_text);
|
"listen() to %s failed", ls[i].addr_text.data);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
#ifndef _NGX_HTTP_CONFIG_COMMAND_H_INCLUDED_
|
|
||||||
#define _NGX_HTTP_CONFIG_COMMAND_H_INCLUDED_
|
|
||||||
|
|
||||||
|
|
||||||
#define NGX_CONF_TAKE1 0
|
|
||||||
#define NGX_CONF_ITERATE 0
|
|
||||||
|
|
||||||
#define NGX_CONF_UNSET -1
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *name;
|
|
||||||
char *(*set)();
|
|
||||||
int offset;
|
|
||||||
int zone;
|
|
||||||
int type;
|
|
||||||
char *description;
|
|
||||||
} ngx_command_t;
|
|
||||||
|
|
||||||
char *ngx_conf_set_size_slot(char *conf, int offset, char *value);
|
|
||||||
char *ngx_conf_set_time_slot(char *conf, int offset, char *value);
|
|
||||||
|
|
||||||
|
|
||||||
#endif _NGX_HTTP_CONFIG_COMMAND_H_INCLUDED_
|
|
@ -1,54 +1,67 @@
|
|||||||
|
|
||||||
#include <ngx_config.h>
|
#include <ngx_config.h>
|
||||||
|
|
||||||
|
#include <ngx_core.h>
|
||||||
|
|
||||||
#if 0
|
#include <ngx_config_file.h>
|
||||||
|
|
||||||
typedef struct ngx_conf_file_t {
|
|
||||||
ngx_fd_t fd;
|
|
||||||
char *name;
|
|
||||||
int line;
|
|
||||||
char *pos;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct ngx_conf_t {
|
|
||||||
char *name;
|
|
||||||
ngx_array_t *args;
|
|
||||||
|
|
||||||
ngx_conf_file_t *file;
|
|
||||||
ngx_log_t *log;
|
|
||||||
|
|
||||||
void *context; # ngx_http_conf_t
|
|
||||||
};
|
|
||||||
|
|
||||||
static int argument_number[] = {
|
static int argument_number[] = {
|
||||||
NGX_CONF_NOARGS,
|
NGX_CONF_NOARGS,
|
||||||
NGX_CONF_TAKE1,
|
NGX_CONF_TAKE1,
|
||||||
NGX_CONF_TAKE2,
|
NGX_CONF_TAKE2
|
||||||
NGX_CONF_TAKE3
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
ngx_conf_parse(cf, container, filename)
|
int ngx_conf_parse(ngx_conf_t *cf, char *filename)
|
||||||
{
|
{
|
||||||
create cf;
|
int rc;
|
||||||
|
char *error;
|
||||||
*conatiner(cf);
|
ngx_fd_t fd;
|
||||||
|
ngx_conf_file_t *prev;
|
||||||
|
|
||||||
if (filename) {
|
if (filename) {
|
||||||
open;
|
|
||||||
|
fd = ngx_open_file(filename, NGX_FILE_RDONLY);
|
||||||
|
if (fd == NGX_INVALID_FILE) {
|
||||||
|
ngx_log_error(NGX_LOG_EMERG, cf->log, ngx_errno,
|
||||||
|
"ngx_conf_open: "
|
||||||
|
ngx_open_file_n " %s failed", filename);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
prev = cf->file;
|
||||||
|
ngx_test_null(cf->file, ngx_palloc(cf->pool, sizeof(ngx_conf_file_t)),
|
||||||
|
NGX_ERROR);
|
||||||
|
|
||||||
|
cf->file->fd = fd;
|
||||||
|
cf->file->name = filename;
|
||||||
|
cf->file->line = 1;
|
||||||
|
cf->file->pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
rc = ngx_conf_read_token(cf);
|
rc = ngx_conf_read_token(cf);
|
||||||
|
|
||||||
NGX_OK, NGX_ERROR, NGX_CONF_FILE_DONE, NGX_CONF_BLOCK_DONE
|
/* ??? NGX_OK, NGX_ERROR, NGX_CONF_FILE_DONE, NGX_CONF_BLOCK_DONE */
|
||||||
|
|
||||||
if (rc != NGX_OK)
|
if (rc != NGX_OK) {
|
||||||
return rc;
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
"listen address:port;"
|
/* ????
|
||||||
"location /images/ {"
|
"listen address:port;"
|
||||||
|
"location /images/ {" */
|
||||||
|
|
||||||
|
if (cf->handler) {
|
||||||
|
|
||||||
|
if (*(cf->handler)(cf) == NGX_ERROR) {
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
cmd = ngx_conf_find_token(cf);
|
cmd = ngx_conf_find_token(cf);
|
||||||
if (cmd == NULL) {
|
if (cmd == NULL) {
|
||||||
@ -58,6 +71,18 @@ NGX_OK, NGX_ERROR, NGX_CONF_FILE_DONE, NGX_CONF_BLOCK_DONE
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmd->type & argument_number[cf->args->nelts]) {
|
||||||
|
error = cmd->set(cf, cmd->offset, cf->args);
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
||||||
|
"%s in directive \"%s\" in %s:%d",
|
||||||
|
error, cf->name, cf->file->name, cf->file->line);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (cmd->type == NGX_CONF_CONTAINER) {
|
if (cmd->type == NGX_CONF_CONTAINER) {
|
||||||
ngx_conf_parse(cf, cmd->container, NULL);
|
ngx_conf_parse(cf, cmd->container, NULL);
|
||||||
|
|
||||||
@ -109,14 +134,30 @@ NGX_OK, NGX_ERROR, NGX_CONF_FILE_DONE, NGX_CONF_BLOCK_DONE
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (filename) {
|
if (filename) {
|
||||||
close;
|
cf->file = prev;
|
||||||
|
|
||||||
|
if (ngx_close_file(fd) == NGX_FILE_ERROR) {
|
||||||
|
ngx_log_error(NGX_LOG_ERR, cf->log, ngx_errno,
|
||||||
|
ngx_close_file_n " %s failed", cf->name);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
int ngx_conf_read_token(ngx_conf_t *cf)
|
int ngx_conf_read_token(ngx_conf_t *cf)
|
||||||
{
|
{
|
||||||
|
char *start, ch, *src, *dst;
|
||||||
|
int n, need_space, last_space, len, quoted, s_quoted, d_quoted;
|
||||||
|
ngx_hunk_t *h;
|
||||||
|
|
||||||
need_space = 0;
|
need_space = 0;
|
||||||
last_space = 1;
|
last_space = 1;
|
||||||
@ -124,13 +165,35 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
quoted = s_quoted = d_quoted = 0;
|
quoted = s_quoted = d_quoted = 0;
|
||||||
|
|
||||||
cf->args->nelts = 0;
|
cf->args->nelts = 0;
|
||||||
|
h = cf->conf_file->hunk;
|
||||||
|
|
||||||
for (/* void */ ; cf->pos < cf->end; cf->pos++) {
|
for (start = h->pos.mem; /* end_of_file */ ; h->pos.mem++) {
|
||||||
|
|
||||||
ch = *cf->pos;
|
if (h->pos.mem >= h->last.mem) {
|
||||||
|
if (h->pos.mem - start) {
|
||||||
|
ngx_memcpy(h->start, start, h->pos.mem - start);
|
||||||
|
}
|
||||||
|
|
||||||
if (ch == LF)
|
n = ngx_read_file(cf->conf_file->file,
|
||||||
cf->line++;
|
h->start + (h->pos.mem - start),
|
||||||
|
h->end - (h->start + (h->pos.mem - start)),
|
||||||
|
cf->conf_file->file.offset);
|
||||||
|
|
||||||
|
if (n == NGX_ERROR) {
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
cf->conf_file.file.offset += n;
|
||||||
|
h->pos.mem = h->start + (h->pos.mem - start);
|
||||||
|
start = h->start;
|
||||||
|
h->last.mem = h->pos.mem + n;
|
||||||
|
}
|
||||||
|
|
||||||
|
ch = *h->pos.mem;
|
||||||
|
|
||||||
|
if (ch == LF) {
|
||||||
|
cf->conf_file->line++;
|
||||||
|
}
|
||||||
|
|
||||||
if (quoted) {
|
if (quoted) {
|
||||||
quoted = 0;
|
quoted = 0;
|
||||||
@ -139,6 +202,15 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
|
|
||||||
len++;
|
len++;
|
||||||
|
|
||||||
|
if (last_space) {
|
||||||
|
start = h->pos.mem;
|
||||||
|
|
||||||
|
if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) {
|
||||||
|
start++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ch = '\\') {
|
if (ch = '\\') {
|
||||||
quoted = 1;
|
quoted = 1;
|
||||||
continue;
|
continue;
|
||||||
@ -147,7 +219,7 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
if (d_quoted) {
|
if (d_quoted) {
|
||||||
|
|
||||||
if (ch == '"') {
|
if (ch == '"') {
|
||||||
d_qouted = 0;
|
d_quoted = 0;
|
||||||
need_space = 1;
|
need_space = 1;
|
||||||
last_space = 1;
|
last_space = 1;
|
||||||
continue;
|
continue;
|
||||||
@ -156,7 +228,7 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
} else if (s_quoted) {
|
} else if (s_quoted) {
|
||||||
|
|
||||||
if (ch == '\'') {
|
if (ch == '\'') {
|
||||||
s_qouted = 0;
|
s_quoted = 0;
|
||||||
need_space = 1;
|
need_space = 1;
|
||||||
last_space = 1;
|
last_space = 1;
|
||||||
continue;
|
continue;
|
||||||
@ -165,11 +237,12 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) {
|
if (ch == ' ' || ch == '\t' || ch == CR || ch == LF) {
|
||||||
ngx_test_null(word, ngx_push_array(cf->args), NGX_ERRROR);
|
ngx_test_null(word, ngx_push_array(cf->args), NGX_ERROR);
|
||||||
ngx_test_null(*word, ngx_palloc(cf->temp_pool, len + 1),
|
ngx_test_null(word->data, ngx_palloc(cf->temp_pool, len + 1),
|
||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
word->len = len;
|
||||||
|
|
||||||
for (dst = *word, src = cf->start; src < cf->pos; /* void */) {
|
for (dst = word->data, src = start; src < h->pos; /* void */) {
|
||||||
if (*src == '\\')
|
if (*src == '\\')
|
||||||
src++;
|
src++;
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
@ -185,23 +258,26 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch == ';')
|
if (ch == ';') {
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (ch == '{')
|
if (ch == '{') {
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (ch == '}')
|
if (ch == '}') {
|
||||||
return NGX_BLOCK_DONE;
|
return NGX_BLOCK_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
if (last_space) {
|
if (last_space) {
|
||||||
if (ch == '"') {
|
if (ch == '"') {
|
||||||
d_qouted = 1;
|
d_quoted = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch == '\'') {
|
if (ch == '\'') {
|
||||||
s_qouted = 1;
|
s_quoted = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -211,50 +287,8 @@ int ngx_conf_read_token(ngx_conf_t *cf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
container
|
|
||||||
server
|
|
||||||
location
|
|
||||||
module
|
|
||||||
if
|
|
||||||
|
|
||||||
http_conf current server
|
|
||||||
current location
|
|
||||||
|
|
||||||
|
|
||||||
ngx_conf_t *ngx_conf_open(char *filename, ngx_log_t *log)
|
|
||||||
{
|
|
||||||
ngx_cf->fd = ngx_open_file(config, NGX_FILE_RDONLY);
|
|
||||||
if (ngx_conf->fd == -1) {
|
|
||||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
|
|
||||||
"ngx_conf_open: "
|
|
||||||
ngx_open_file_n " %s failed", filename);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_conf->name = filename;
|
|
||||||
ngx_conf->log = log;
|
|
||||||
return ngx_conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ngx_conf_close(ngx_conf_t *cf)
|
|
||||||
{
|
|
||||||
if (ngx_close_file(cf->fd) == -1) {
|
|
||||||
ngx_log_error(NGX_LOG_ERR, cf->log, ngx_errno,
|
|
||||||
ngx_close_file_n " %s failed", cf->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
cf->fd = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
char *ngx_conf_set_size_slot(char *conf, int offset, char *value)
|
char *ngx_conf_set_size_slot(char *conf, int offset, char *value)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
56
src/core/ngx_config_file.h
Normal file
56
src/core/ngx_config_file.h
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#ifndef _NGX_HTTP_CONFIG_FILE_H_INCLUDED_
|
||||||
|
#define _NGX_HTTP_CONFIG_FILE_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
|
#include <ngx_config.h>
|
||||||
|
#include <ngx_files.h>
|
||||||
|
#include <ngx_log.h>
|
||||||
|
#include <ngx_file.h>
|
||||||
|
#include <ngx_alloc.h>
|
||||||
|
#include <ngx_hunk.h>
|
||||||
|
#include <ngx_array.h>
|
||||||
|
|
||||||
|
#define NGX_CONF_NOARGS 1
|
||||||
|
#define NGX_CONF_TAKE1 2
|
||||||
|
#define NGX_CONF_TAKE2 4
|
||||||
|
|
||||||
|
#define NGX_CONF_ITERATE 0
|
||||||
|
|
||||||
|
#define NGX_CONF_UNSET -1
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
ngx_file_t file;
|
||||||
|
ngx_hunk_t *hunk;
|
||||||
|
int line;
|
||||||
|
} ngx_conf_file_t;
|
||||||
|
|
||||||
|
typedef struct ngx_conf_s ngx_conf_t;
|
||||||
|
struct ngx_conf_s {
|
||||||
|
char *name;
|
||||||
|
ngx_array_t *args;
|
||||||
|
|
||||||
|
ngx_pool_t *pool;
|
||||||
|
ngx_conf_file_t *conf_file;
|
||||||
|
ngx_log_t *log;
|
||||||
|
|
||||||
|
void *ctx;
|
||||||
|
int (*handler)(ngx_conf_t *cf);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *name;
|
||||||
|
char *(*set)();
|
||||||
|
int offset;
|
||||||
|
int zone;
|
||||||
|
int type;
|
||||||
|
char *description;
|
||||||
|
} ngx_command_t;
|
||||||
|
|
||||||
|
char *ngx_conf_set_size_slot(char *conf, int offset, char *value);
|
||||||
|
char *ngx_conf_set_time_slot(char *conf, int offset, char *value);
|
||||||
|
|
||||||
|
|
||||||
|
#endif _NGX_HTTP_CONFIG_FILE_H_INCLUDED_
|
@ -27,8 +27,9 @@ static ngx_event_t timer_queue;
|
|||||||
|
|
||||||
int ngx_kqueue_init(int max_connections, ngx_log_t *log)
|
int ngx_kqueue_init(int max_connections, ngx_log_t *log)
|
||||||
{
|
{
|
||||||
int size = sizeof(struct kevent) * 512;
|
int size;
|
||||||
|
|
||||||
|
size = sizeof(struct kevent) * 512;
|
||||||
nchanges = 0;
|
nchanges = 0;
|
||||||
nevents = 512;
|
nevents = 512;
|
||||||
|
|
||||||
@ -68,8 +69,9 @@ int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
|
|||||||
{
|
{
|
||||||
ngx_event_t *e;
|
ngx_event_t *e;
|
||||||
|
|
||||||
if (ev->index < nchanges && change_list[ev->index].udata == ev) {
|
if (nchanges > 0 && ev->index < nchanges
|
||||||
|
&& change_list[ev->index].udata == ev)
|
||||||
|
{
|
||||||
ngx_connection_t *cn = (ngx_connection_t *) ev->data;
|
ngx_connection_t *cn = (ngx_connection_t *) ev->data;
|
||||||
ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _
|
ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _
|
||||||
cn->fd _ event);
|
cn->fd _ event);
|
||||||
@ -92,8 +94,10 @@ int ngx_kqueue_del_event(ngx_event_t *ev, int event, u_int flags)
|
|||||||
|
|
||||||
int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
|
int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
|
||||||
{
|
{
|
||||||
struct timespec ts = { 0, 0 };
|
struct timespec ts;
|
||||||
ngx_connection_t *cn = (ngx_connection_t *) ev->data;
|
ngx_connection_t *cn;
|
||||||
|
|
||||||
|
cn = (ngx_connection_t *) ev->data;
|
||||||
|
|
||||||
ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _
|
ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _
|
||||||
cn->fd _ filter _ flags);
|
cn->fd _ filter _ flags);
|
||||||
@ -102,6 +106,9 @@ int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
|
|||||||
ngx_log_error(NGX_LOG_WARN, ev->log, 0,
|
ngx_log_error(NGX_LOG_WARN, ev->log, 0,
|
||||||
"kqueue change list is filled up");
|
"kqueue change list is filled up");
|
||||||
|
|
||||||
|
ts.tv_sec = 0;
|
||||||
|
ts.tv_nsec = 0;
|
||||||
|
|
||||||
if (kevent(kq, change_list, nchanges, NULL, 0, &ts) == -1) {
|
if (kevent(kq, change_list, nchanges, NULL, 0, &ts) == -1) {
|
||||||
ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno, "kevent failed");
|
ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno, "kevent failed");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
@ -149,6 +156,7 @@ int ngx_kqueue_process_events(ngx_log_t *log)
|
|||||||
ngx_log_debug(log, "kevent timer: %d" _ timer);
|
ngx_log_debug(log, "kevent timer: %d" _ timer);
|
||||||
|
|
||||||
events = kevent(kq, change_list, nchanges, event_list, nevents, tp);
|
events = kevent(kq, change_list, nchanges, event_list, nevents, tp);
|
||||||
|
|
||||||
if (events == -1) {
|
if (events == -1) {
|
||||||
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent failed");
|
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kevent failed");
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
@ -22,7 +22,7 @@ ngx_event_t *ngx_read_events, *ngx_write_events;
|
|||||||
|
|
||||||
#if !(USE_KQUEUE)
|
#if !(USE_KQUEUE)
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
|
ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
|
||||||
#else
|
#else
|
||||||
ngx_event_type_e ngx_event_type = NGX_KQUEUE_EVENT;
|
ngx_event_type_e ngx_event_type = NGX_KQUEUE_EVENT;
|
||||||
|
@ -135,7 +135,7 @@ NGX_CLOSE_EVENT kqueue: kqueue deletes events for file that closed
|
|||||||
#define ngx_init_events ngx_kqueue_init
|
#define ngx_init_events ngx_kqueue_init
|
||||||
#define ngx_process_events ngx_kqueue_process_events
|
#define ngx_process_events ngx_kqueue_process_events
|
||||||
#define ngx_add_event ngx_kqueue_add_event
|
#define ngx_add_event ngx_kqueue_add_event
|
||||||
#define ngx_del_event ngx_kqueue_add_event
|
#define ngx_del_event ngx_kqueue_del_event
|
||||||
#define ngx_add_timer ngx_kqueue_add_timer
|
#define ngx_add_timer ngx_kqueue_add_timer
|
||||||
#define ngx_event_recv ngx_event_recv_core
|
#define ngx_event_recv ngx_event_recv_core
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <ngx_errno.h>
|
#include <ngx_errno.h>
|
||||||
#include <ngx_string.h>
|
#include <ngx_string.h>
|
||||||
#include <ngx_files.h>
|
#include <ngx_files.h>
|
||||||
#include <ngx_config_command.h>
|
#include <ngx_config_file.h>
|
||||||
#include <ngx_http.h>
|
#include <ngx_http.h>
|
||||||
#include <ngx_http_config.h>
|
#include <ngx_http_config.h>
|
||||||
#include <ngx_http_index_handler.h>
|
#include <ngx_http_index_handler.h>
|
||||||
|
@ -32,8 +32,6 @@ int ngx_http_log_handler(ngx_http_request_t *r)
|
|||||||
len += r->connection->addr_text.len;
|
len += r->connection->addr_text.len;
|
||||||
len += r->request_line.len;
|
len += r->request_line.len;
|
||||||
|
|
||||||
ngx_log_debug(r->connection->log, "log handler: %d" _ len);
|
|
||||||
|
|
||||||
ngx_test_null(line, ngx_palloc(r->pool, len), NGX_ERROR);
|
ngx_test_null(line, ngx_palloc(r->pool, len), NGX_ERROR);
|
||||||
p = line;
|
p = line;
|
||||||
|
|
||||||
@ -46,13 +44,8 @@ int ngx_http_log_handler(ngx_http_request_t *r)
|
|||||||
|
|
||||||
*p++ = ' ';
|
*p++ = ' ';
|
||||||
|
|
||||||
*p = '\0';
|
|
||||||
ngx_log_debug(r->connection->log, "log handler: %s" _ line);
|
|
||||||
|
|
||||||
ngx_localtime(&tm);
|
ngx_localtime(&tm);
|
||||||
|
|
||||||
ngx_log_debug(r->connection->log, "log handler: %s" _ line);
|
|
||||||
|
|
||||||
*p++ = '[';
|
*p++ = '[';
|
||||||
p += ngx_snprintf(p, 21, "%02d/%s/%d:%02d:%02d:%02d",
|
p += ngx_snprintf(p, 21, "%02d/%s/%d:%02d:%02d:%02d",
|
||||||
tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
|
tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
|
||||||
@ -63,9 +56,6 @@ int ngx_http_log_handler(ngx_http_request_t *r)
|
|||||||
|
|
||||||
*p++ = ' ';
|
*p++ = ' ';
|
||||||
|
|
||||||
*p = '\0';
|
|
||||||
ngx_log_debug(r->connection->log, "log handler: %s" _ line);
|
|
||||||
|
|
||||||
*p++ = '"';
|
*p++ = '"';
|
||||||
ngx_memcpy(p, r->request_line.data, r->request_line.len);
|
ngx_memcpy(p, r->request_line.data, r->request_line.len);
|
||||||
p += r->request_line.len;
|
p += r->request_line.len;
|
||||||
@ -79,19 +69,13 @@ int ngx_http_log_handler(ngx_http_request_t *r)
|
|||||||
|
|
||||||
p += ngx_snprintf(p, 21, QD_FMT, r->connection->sent);
|
p += ngx_snprintf(p, 21, QD_FMT, r->connection->sent);
|
||||||
|
|
||||||
*p = '\0';
|
|
||||||
ngx_log_debug(r->connection->log, "log handler: %s" _ line);
|
|
||||||
|
|
||||||
#if (WIN32)
|
#if (WIN32)
|
||||||
*p++ = CR; *p++ = LF;
|
*p++ = CR; *p++ = LF;
|
||||||
#else
|
#else
|
||||||
*p++ = LF;
|
*p++ = LF;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*p = '\0';
|
write(1, line, p - line);
|
||||||
ngx_log_debug(r->connection->log, "log handler: %s" _ line);
|
|
||||||
|
|
||||||
write(1, line, len);
|
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <ngx_hunk.h>
|
#include <ngx_hunk.h>
|
||||||
#include <ngx_files.h>
|
#include <ngx_files.h>
|
||||||
#include <ngx_connection.h>
|
#include <ngx_connection.h>
|
||||||
#include <ngx_config_command.h>
|
#include <ngx_config_file.h>
|
||||||
|
|
||||||
|
|
||||||
#define NGX_HTTP_VERSION_10 1000
|
#define NGX_HTTP_VERSION_10 1000
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
#include <ngx_config.h>
|
#include <ngx_config.h>
|
||||||
#include <ngx_core.h>
|
#include <ngx_core.h>
|
||||||
#include <ngx_config_command.h>
|
#include <ngx_config_file.h>
|
||||||
#include <ngx_http.h>
|
#include <ngx_http.h>
|
||||||
#include <ngx_http_write_filter.h>
|
#include <ngx_http_write_filter.h>
|
||||||
#include <ngx_http_output_filter.h>
|
#include <ngx_http_output_filter.h>
|
||||||
@ -17,7 +17,7 @@ void **ngx_srv_conf;
|
|||||||
void **ngx_loc_conf;
|
void **ngx_loc_conf;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
void *ngx_http_block(ngx_conf_t *cf)
|
int ngx_http_block(ngx_conf_t *cf)
|
||||||
{
|
{
|
||||||
ngx_http_conf_ctx_t *ctx;
|
ngx_http_conf_ctx_t *ctx;
|
||||||
|
|
||||||
@ -25,10 +25,12 @@ void *ngx_http_block(ngx_conf_t *cf)
|
|||||||
ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* null server config */
|
/* null server config */
|
||||||
ngx_test_null(ctx->srv_conf,
|
ngx_test_null(ctx->srv_conf,
|
||||||
ngx_pcalloc(cf->pool, sizeof(void *) * ngx_max_module),
|
ngx_pcalloc(cf->pool, sizeof(void *) * ngx_max_module),
|
||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* null location config */
|
/* null location config */
|
||||||
ngx_test_null(ctx->loc_conf,
|
ngx_test_null(ctx->loc_conf,
|
||||||
@ -36,10 +38,12 @@ void *ngx_http_block(ngx_conf_t *cf)
|
|||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
|
||||||
for (i = 0; modules[i]; i++) {
|
for (i = 0; modules[i]; i++) {
|
||||||
|
#if 0
|
||||||
if (modules[i]->create_srv_conf)
|
if (modules[i]->create_srv_conf)
|
||||||
ngx_test_null(ctx->srv_conf[i],
|
ngx_test_null(ctx->srv_conf[i],
|
||||||
modules[i]->create_srv_conf(cf->pool),
|
modules[i]->create_srv_conf(cf->pool),
|
||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (modules[i]->create_loc_conf)
|
if (modules[i]->create_loc_conf)
|
||||||
ngx_test_null(ctx->loc_conf[i],
|
ngx_test_null(ctx->loc_conf[i],
|
||||||
@ -51,10 +55,9 @@ void *ngx_http_block(ngx_conf_t *cf)
|
|||||||
return ngx_conf_parse(cf);
|
return ngx_conf_parse(cf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *ngx_server_block(ngx_conf_t *cf)
|
int ngx_server_block(ngx_conf_t *cf)
|
||||||
{
|
{
|
||||||
ngx_http_conf_ctx_t *ctx, *prev;
|
ngx_http_conf_ctx_t *ctx, *prev;
|
||||||
ngx_http_core_loc_conf_t *loc_conf;
|
|
||||||
|
|
||||||
ngx_test_null(ctx,
|
ngx_test_null(ctx,
|
||||||
ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
||||||
@ -88,31 +91,45 @@ void *ngx_server_block(ngx_conf_t *cf)
|
|||||||
rc = ngx_conf_parse(cf);
|
rc = ngx_conf_parse(cf);
|
||||||
cf->ctx = prev;
|
cf->ctx = prev;
|
||||||
|
|
||||||
if (loc == NULL)
|
if (loc == NGX_ERROR)
|
||||||
return NULL;
|
return NGX_ERROR;
|
||||||
|
|
||||||
for (i = 0; modules[i]; i++) {
|
for (i = 0; modules[i]; i++) {
|
||||||
|
#if 0
|
||||||
if (modules[i]->merge_srv_conf)
|
if (modules[i]->merge_srv_conf)
|
||||||
if (modules[i]->merge_srv_conf(cf->pool,
|
if (modules[i]->merge_srv_conf(cf->pool,
|
||||||
prev->srv_conf, ctx->srv_conf)
|
prev->srv_conf, ctx->srv_conf)
|
||||||
== NGX_ERROR)
|
== NGX_ERROR)
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (modules[i]->init_srv_conf)
|
||||||
|
if (modules[i]->init_srv_conf(cf->pool, ctx->srv_conf) == NGX_ERROR)
|
||||||
|
return NGX_ERROR;
|
||||||
|
|
||||||
if (modules[i]->merge_loc_conf)
|
if (modules[i]->merge_loc_conf)
|
||||||
if (modules[i]->merge_loc_conf(cf->pool,
|
if (modules[i]->merge_loc_conf(cf->pool,
|
||||||
prev->loc_conf, ctx->loc_conf)
|
prev->loc_conf, ctx->loc_conf)
|
||||||
== NGX_ERROR)
|
== NGX_ERROR)
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|
||||||
|
for (array) {
|
||||||
|
if (modules[i]->merge_loc_conf(cf->pool,
|
||||||
|
ctx->loc_conf, loc->loc_conf)
|
||||||
|
== NGX_ERROR)
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (void *) 1;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *ngx_location_block(ngx_conf_t *cf)
|
int ngx_location_block(ngx_conf_t *cf)
|
||||||
{
|
{
|
||||||
|
ngx_http_conf_ctx_t *ctx, *prev;
|
||||||
|
|
||||||
ngx_test_null(ctx,
|
ngx_test_null(ctx, ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
||||||
ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)),
|
|
||||||
NGX_ERROR);
|
NGX_ERROR);
|
||||||
|
|
||||||
ctx->srv_conf = cf->ctx->srv_conf;
|
ctx->srv_conf = cf->ctx->srv_conf;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
#include <ngx_config.h>
|
#include <ngx_config.h>
|
||||||
#include <ngx_core.h>
|
#include <ngx_core.h>
|
||||||
#include <ngx_config_command.h>
|
#include <ngx_config_file.h>
|
||||||
#include <ngx_http.h>
|
#include <ngx_http.h>
|
||||||
#include <ngx_http_core.h>
|
#include <ngx_http_core.h>
|
||||||
#include <ngx_http_config.h>
|
#include <ngx_http_config.h>
|
||||||
|
@ -107,7 +107,7 @@ int ngx_http_init_connection(ngx_connection_t *c)
|
|||||||
c->addr_text.len = ngx_inet_ntop(c->family,
|
c->addr_text.len = ngx_inet_ntop(c->family,
|
||||||
(char *)c->sockaddr + c->addr,
|
(char *)c->sockaddr + c->addr,
|
||||||
c->addr_text.data, c->addr_text.len);
|
c->addr_text.data, c->addr_text.len);
|
||||||
if (c->addr_text.len = 0)
|
if (c->addr_text.len == 0)
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
|
|
||||||
ngx_test_null(ctx, ngx_pcalloc(c->pool, sizeof(ngx_http_log_ctx_t)),
|
ngx_test_null(ctx, ngx_pcalloc(c->pool, sizeof(ngx_http_log_ctx_t)),
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include <ngx_files.h>
|
#include <ngx_files.h>
|
||||||
#include <ngx_string.h>
|
#include <ngx_string.h>
|
||||||
#include <ngx_hunk.h>
|
#include <ngx_hunk.h>
|
||||||
#include <ngx_config_command.h>
|
#include <ngx_config_file.h>
|
||||||
#include <ngx_http.h>
|
#include <ngx_http.h>
|
||||||
#include <ngx_http_config.h>
|
#include <ngx_http_config.h>
|
||||||
#include <ngx_http_output_filter.h>
|
#include <ngx_http_output_filter.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user