nginx-0.0.7-2004-06-24-11:53:37 import

This commit is contained in:
Igor Sysoev 2004-06-24 07:53:37 +00:00
parent e0207bb8eb
commit c83f683553
8 changed files with 207 additions and 67 deletions

View File

@ -66,6 +66,12 @@ fi
HTTP_MODULES="$HTTP_MODULES $HTTP_STATIC_MODULE $HTTP_INDEX_MODULE"
if [ $HTTP_STATUS = YES ]; then
have=NGX_HTTP_STATUS . auto/have
HTTP_MODULES="$HTTP_MODULES $HTTP_STATUS_MODULE"
HTTP_SRCS="$HTTP_SRCS $HTTP_STATUS_SRCS"
fi
if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
have=NGX_HTTP_REWRITE . auto/have
USE_PCRE=YES

View File

@ -30,9 +30,10 @@ EVENT_AIO=NO
USE_THREADS=NO
HTTP_CHARSET=YES
HTTP_REWRITE=YES
HTTP_GZIP=YES
HTTP_SSI=YES
HTTP_STATUS=YES
HTTP_REWRITE=YES
HTTP_PROXY=YES
USE_PCRE=NO
@ -82,9 +83,10 @@ do
--with-threads) USE_THREADS="pthreads" ;;
--without-http_charset_module) HTTP_CHARSET=NO ;;
--without-http_rewrite_module) HTTP_REWRITE=NO ;;
--without-http_ssi_module) HTTP_SSI=NO ;;
--without-http_gzip_module) HTTP_GZIP=NO ;;
--without-http_status_module) HTTP_STATUS=NO ;;
--without-http_rewrite_module) HTTP_REWRITE=NO ;;
--without-http_proxy_module) HTTP_PROXY=NO ;;
--with-cc=*) CC="$value" ;;

View File

@ -240,10 +240,6 @@ HTTP_CHARSET_FILTER_MODULE=ngx_http_charset_filter_module
HTTP_CHARSET_SRCS=src/http/modules/ngx_http_charset_filter.c
HTTP_REWRITE_MODULE=ngx_http_rewrite_module
HTTP_REWRITE_SRCS=src/http/modules/ngx_http_rewrite_handler.c
HTTP_GZIP_FILTER_MODULE=ngx_http_gzip_filter_module
HTTP_GZIP_SRCS=src/http/modules/ngx_http_gzip_filter.c
@ -252,6 +248,14 @@ HTTP_SSI_FILTER_MODULE=ngx_http_ssi_filter_module
HTTP_SSI_SRCS=src/http/modules/ngx_http_ssi_filter.c
HTTP_STATUS_MODULE=ngx_http_status_module
HTTP_STATUS_SRCS=src/http/modules/ngx_http_status_handler.c
HTTP_REWRITE_MODULE=ngx_http_rewrite_module
HTTP_REWRITE_SRCS=src/http/modules/ngx_http_rewrite_handler.c
HTTP_PROXY_MODULE=ngx_http_proxy_module
HTTP_PROXY_INCS="src/http/modules/proxy"
HTTP_PROXY_DEPS=src/http/modules/proxy/ngx_http_proxy_handler.h

View File

@ -264,6 +264,7 @@ static ngx_int_t ngx_event_process_init(ngx_cycle_t *cycle)
c = cycle->connections;
for (i = 0; i < cycle->connection_n; i++) {
c[i].fd = (ngx_socket_t) -1;
c[i].data = NULL;
}
cycle->read_events = ngx_alloc(sizeof(ngx_event_t) * ecf->connections,

View File

@ -1,61 +0,0 @@
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
static ngx_command_t ngx_http_status_commands[] = {
ngx_null_command
};
ngx_http_module_t ngx_http_status_module_ctx = {
NULL, /* pre conf */
NULL, /* create main configuration */
NULL, /* init main configuration */
NULL, /* create server configuration */
NULL, /* merge server configuration */
ngx_http_status_create_loc_conf, /* create location configration */
ngx_http_status_merge_loc_conf /* merge location configration */
};
ngx_module_t ngx_http_status_module = {
NGX_MODULE,
&ngx_http_status_module_ctx, /* module context */
ngx_http_status_commands, /* module directives */
NGX_HTTP_MODULE, /* module type */
ngx_http_status_init, /* init module */
NULL /* init child */
};
static char http_states = "IRPCUWLK";
int ngx_http_status_handler(ngx_http_request_t *r)
{
ngx_int_t i, http;
ngx_connection_t *c;
ngx_http_request_t *sr;
c = ngx_cycle->connections;
for (i = 0; i < ngx_cycle->connection_n; i++) {
if (c[i].module != http || c[i].data == NULL) {
continue;
}
if (c[i].data == NULL && c[i].fd != -1) {
'A'
}
sr = c[i].data;
}
return NGX_OK;
}

View File

@ -0,0 +1,181 @@
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
static char *ngx_http_status(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
static ngx_command_t ngx_http_status_commands[] = {
{ ngx_string("status"),
NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
ngx_http_status,
0,
0,
NULL },
ngx_null_command
};
ngx_http_module_t ngx_http_status_module_ctx = {
NULL, /* pre conf */
NULL, /* create main configuration */
NULL, /* init main configuration */
NULL, /* create server configuration */
NULL, /* merge server configuration */
NULL, /* create location configuration */
NULL /* merge location configuration */
};
ngx_module_t ngx_http_status_module = {
NGX_MODULE,
&ngx_http_status_module_ctx, /* module context */
ngx_http_status_commands, /* module directives */
NGX_HTTP_MODULE, /* module type */
NULL, /* init module */
NULL /* init process */
};
static ngx_int_t ngx_http_status_handler(ngx_http_request_t *r)
{
size_t len;
ngx_int_t rc;
ngx_uint_t i, dash;
ngx_buf_t *b;
ngx_chain_t out;
ngx_connection_t *c;
ngx_http_request_t *rq;
if (r->method != NGX_HTTP_GET && r->method != NGX_HTTP_HEAD) {
return NGX_HTTP_NOT_ALLOWED;
}
rc = ngx_http_discard_body(r);
if (rc != NGX_OK && rc != NGX_AGAIN) {
return rc;
}
if (!(r->headers_out.content_type =
ngx_http_add_header(&r->headers_out, ngx_http_headers_out)))
{
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
r->headers_out.content_type->key.len = 0;
r->headers_out.content_type->key.data = NULL;
r->headers_out.content_type->value.len = sizeof("text/plain") - 1;
r->headers_out.content_type->value.data = (u_char *) "text/plain";
if (r->method == NGX_HTTP_HEAD) {
r->headers_out.status = NGX_HTTP_OK;
rc = ngx_http_send_header(r);
if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
return rc;
}
}
len = 0;
dash = 0;
c = ngx_cycle->connections;
for (i = 0; i < ngx_cycle->connection_n; i++) {
rq = c[i].data;
if (rq && rq->signature == NGX_HTTP_MODULE) {
if (rq->request_line.len) {
len += NGX_INT32_LEN + 1 + rq->request_line.len + 2 + 2;
dash = 0;
}
continue;
}
if (!dash) {
len += 3;
dash = 1;
}
}
if (!(b = ngx_create_temp_buf(r->pool, len))) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
dash = 0;
for (i = 0; i < ngx_cycle->connection_n; i++) {
rq = c[i].data;
if (rq && rq->signature == NGX_HTTP_MODULE) {
#if 0
switch (rq->http_state) {
case NGX_HTTP_INITING_REQUEST_STATE:
case NGX_HTTP_KEEPALIVE_STATE:
}
#endif
if (rq->request_line.len) {
b->last += ngx_snprintf((char *) b->last, NGX_INT32_LEN,
"%u", i);
*(b->last++) = ' ';
*(b->last++) = '"';
b->last = ngx_cpymem(b->last, r->request_line.data,
r->request_line.len);
*(b->last++) = '"';
*(b->last++) = CR; *(b->last++) = LF;
dash = 0;
}
continue;
}
if (!dash) {
*(b->last++) = '-'; *(b->last++) = CR; *(b->last++) = LF;
dash = 1;
}
}
r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_length_n = b->last - b->pos;
rc = ngx_http_send_header(r);
if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
return rc;
}
if (!r->main) {
b->last_buf = 1;
}
out.buf = b;
out.next = NULL;
return ngx_http_output_filter(r, &out);
}
static char *ngx_http_status(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_conf_ctx_t *ctx;
ngx_http_core_loc_conf_t *clcf;
ctx = cf->ctx;
clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
clcf->handler = ngx_http_status_handler;
return NGX_CONF_OK;
}

View File

@ -161,6 +161,7 @@ static void ngx_http_init_request(ngx_event_t *rev)
}
}
r->signature = NGX_HTTP_MODULE;
r->http_state = NGX_HTTP_INITING_REQUEST_STATE;
/* find the server configuration for the address:port */
@ -1382,6 +1383,8 @@ static void ngx_http_set_keepalive(ngx_http_request_t *r)
c->tcp_nopush = NGX_TCP_NOPUSH_UNSET;
}
r->http_state = NGX_HTTP_KEEPALIVE_STATE;
if (rev->ready) {
ngx_http_keepalive_handler(rev);
}
@ -1688,6 +1691,8 @@ void ngx_http_close_request(ngx_http_request_t *r, int error)
ctx = log->data;
ctx->url = NULL;
r->request_line.len = 0;
ngx_destroy_pool(r->pool);
return;

View File

@ -207,6 +207,8 @@ struct ngx_http_cleanup_s {
typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);
struct ngx_http_request_s {
uint32_t signature; /* "HTTP" */
ngx_connection_t *connection;
void **ctx;