nginx-0.0.2-2004-03-09-22:47:07 import

This commit is contained in:
Igor Sysoev 2004-03-09 19:47:07 +00:00
parent 833823cbb8
commit fc5a10aedc
34 changed files with 554 additions and 181 deletions

View file

@ -35,7 +35,7 @@ static int ngx_worker_thread_cycle(void *data);
#endif
static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle, char **envp);
static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle);
static ngx_int_t ngx_getopt(ngx_master_ctx_t *ctx, ngx_cycle_t *cycle);
static ngx_int_t ngx_core_module_init(ngx_cycle_t *cycle);
static char *ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
@ -112,7 +112,7 @@ ngx_int_t ngx_reopen;
ngx_int_t ngx_change_binary;
int main(int argc, char *const *argv, char **envp)
int main(int argc, char *const *argv)
{
ngx_int_t i;
ngx_log_t *log;
@ -145,6 +145,10 @@ int main(int argc, char *const *argv, char **envp)
init_cycle.log = log;
ngx_cycle = &init_cycle;
#if 0
/* STUB */ log->log_level = NGX_LOG_DEBUG_ALL;
#endif
ngx_memzero(&ctx, sizeof(ngx_master_ctx_t));
ctx.argc = argc;
ctx.argv = argv;
@ -172,7 +176,7 @@ int main(int argc, char *const *argv, char **envp)
return 1;
}
if (ngx_add_inherited_sockets(&init_cycle, envp) == NGX_ERROR) {
if (ngx_add_inherited_sockets(&init_cycle) == NGX_ERROR) {
return 1;
}
@ -256,49 +260,48 @@ int main(int argc, char *const *argv, char **envp)
}
static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle, char **envp)
static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle)
{
char *p, *v;
char *p, *v, *inherited;
ngx_socket_t s;
ngx_listening_t *ls;
for ( /* void */ ; *envp; envp++) {
if (ngx_strncmp(*envp, NGINX_VAR, NGINX_VAR_LEN) != 0) {
continue;
}
inherited = getenv(NGINX_VAR);
ngx_log_error(NGX_LOG_INFO, cycle->log, 0,
"using inherited sockets from \"%s\"", *envp);
ngx_init_array(cycle->listening, cycle->pool,
10, sizeof(ngx_listening_t), NGX_ERROR);
for (p = *envp + NGINX_VAR_LEN, v = p; *p; p++) {
if (*p == ':' || *p == ';') {
s = ngx_atoi(v, p - v);
if (s == NGX_ERROR) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
"invalid socket number \"%s\" "
"in NGINX enviroment variable, "
"ignoring the rest of the variable", v);
break;
}
v = p + 1;
if (!(ls = ngx_push_array(&cycle->listening))) {
return NGX_ERROR;
}
ls->fd = s;
}
}
ngx_inherited = 1;
return ngx_set_inherited_sockets(cycle);
if (inherited == NULL) {
return NGX_OK;
}
return NGX_OK;
ngx_log_error(NGX_LOG_INFO, cycle->log, 0,
"using inherited sockets from \"%s\"", inherited);
ngx_init_array(cycle->listening, cycle->pool,
10, sizeof(ngx_listening_t), NGX_ERROR);
for (p = inherited, v = p; *p; p++) {
if (*p == ':' || *p == ';') {
s = ngx_atoi(v, p - v);
if (s == NGX_ERROR) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
"invalid socket number \"%s\" in "
NGINX_VAR " enviroment variable, "
"ignoring the rest of the variable", v);
break;
}
v = p + 1;
if (!(ls = ngx_push_array(&cycle->listening))) {
return NGX_ERROR;
}
ls->fd = s;
}
}
ngx_inherited = 1;
return ngx_set_inherited_sockets(cycle);
}
@ -314,17 +317,19 @@ ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv)
ctx.name = "new binary process";
ctx.argv = argv;
var = ngx_alloc(NGINX_VAR_LEN
+ cycle->listening.nelts * (NGX_INT32_LEN + 1) + 1,
var = ngx_alloc(sizeof(NGINX_VAR)
+ cycle->listening.nelts * (NGX_INT32_LEN + 1) + 2,
cycle->log);
p = ngx_cpymem(var, NGINX_VAR, NGINX_VAR_LEN);
p = ngx_cpymem(var, NGINX_VAR "=", sizeof(NGINX_VAR));
ls = cycle->listening.elts;
for (i = 0; i < cycle->listening.nelts; i++) {
p += ngx_snprintf(p, NGX_INT32_LEN + 2, "%u;", ls[i].fd);
}
ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0, "inherited: %s", var);
env[0] = var;
env[1] = NULL;
ctx.envp = (char *const *) &env;

View file

@ -8,8 +8,7 @@
#define NGINX_NEW_PID_EXT ".newbin"
#define NGINX_NEW_PID NGINX_PID NGINX_NEW_PID_EXT
#define NGINX_VAR "NGINX="
#define NGINX_VAR_LEN (sizeof(NGINX_VAR) - 1)
#define NGINX_VAR "NGINX"
extern ngx_module_t ngx_core_module;

View file

@ -78,7 +78,7 @@ ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle)
/* TODO: tries configurable */
for (tries = 10; tries; tries--) {
for (tries = /* STUB */ 1; tries; tries--) {
failed = 0;
/* for each listening socket */

View file

@ -227,9 +227,13 @@ ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
}
#if (WIN32)
#if 0
/* TODO: TEST */
fprintf(stderr, "BEFORE\n");
CloseHandle(GetStdHandle(STD_ERROR_HANDLE));
SetStdHandle(STD_ERROR_HANDLE, cycle->log->file->fd);
fprintf(stderr, "AFTER\n");
#endif
#else
if (dup2(cycle->log->file->fd, STDERR_FILENO) == NGX_ERROR) {
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,

View file

@ -245,7 +245,7 @@ static ngx_int_t ngx_iocp_process_events(ngx_log_t *log)
ev->available = bytes;
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, log, 0,
"iocp event handler: %08x" PTR_FMT, ev->event_handler);
"iocp event handler: " PTR_FMT, ev->event_handler);
ev->event_handler(ev);
}

View file

@ -549,9 +549,9 @@ static void *ngx_http_gzip_filter_alloc(void *opaque, u_int items, u_int size)
static void ngx_http_gzip_filter_free(void *opaque, void *address)
{
#if 0
ngx_http_gzip_ctx_t *ctx = opaque;
#if 0
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ctx->request->connection->log, 0,
"gzip free: %X", address);
#endif

View file

@ -844,13 +844,16 @@ static char *ngx_location_block(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
{
char *rv;
ngx_int_t m;
ngx_str_t *value, err;
ngx_str_t *value;
ngx_http_module_t *module;
ngx_conf_t pvcf;
ngx_http_conf_ctx_t *ctx, *pvctx;
ngx_http_core_srv_conf_t *cscf;
ngx_http_core_loc_conf_t *clcf, **clcfp;
#if (HAVE_PCRE)
ngx_str_t err;
char errstr[NGX_MAX_CONF_ERRSTR];
#endif
if (!(ctx = ngx_pcalloc(cf->pool, sizeof(ngx_http_conf_ctx_t)))) {
return NGX_CONF_ERROR;

View file

@ -95,9 +95,6 @@ ngx_module_t ngx_http_log_module = {
static ngx_str_t http_access_log = ngx_string("access.log");
static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static ngx_str_t ngx_http_combined_fmt =
ngx_string("%addr - - [%time] \"%request\" %status %apache_length "
"\"%{Referer}i\" \"%{User-Agent}i\"");

View file

@ -25,4 +25,22 @@ sig_atomic_t ngx_change_binary;
void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
{
ngx_int_t i;
ngx_init_temp_number();
for (i = 0; ngx_modules[i]; i++) {
if (ngx_modules[i]->init_process) {
if (ngx_modules[i]->init_process(cycle) == NGX_ERROR) {
/* fatal */
exit(2);
}
}
}
for ( ;; ) {
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
ngx_process_events(cycle->log);
}
}

View file

@ -35,6 +35,62 @@ int ngx_blocking(ngx_socket_t s);
#define ngx_close_socket_n "closesocket()"
#ifndef WSAID_ACCEPTEX
typedef BOOL (PASCAL FAR * LPFN_ACCEPTEX)(
IN SOCKET sListenSocket,
IN SOCKET sAcceptSocket,
IN PVOID lpOutputBuffer,
IN DWORD dwReceiveDataLength,
IN DWORD dwLocalAddressLength,
IN DWORD dwRemoteAddressLength,
OUT LPDWORD lpdwBytesReceived,
IN LPOVERLAPPED lpOverlapped
);
#define WSAID_ACCEPTEX \
{0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
#endif
#ifndef WSAID_GETACCEPTEXSOCKADDRS
typedef VOID (PASCAL FAR * LPFN_GETACCEPTEXSOCKADDRS)(
IN PVOID lpOutputBuffer,
IN DWORD dwReceiveDataLength,
IN DWORD dwLocalAddressLength,
IN DWORD dwRemoteAddressLength,
OUT struct sockaddr **LocalSockaddr,
OUT LPINT LocalSockaddrLength,
OUT struct sockaddr **RemoteSockaddr,
OUT LPINT RemoteSockaddrLength
);
#define WSAID_GETACCEPTEXSOCKADDRS \
{0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
#endif
#ifndef LPFN_TRANSMITFILE
typedef BOOL (PASCAL FAR * LPFN_TRANSMITFILE)(
IN SOCKET hSocket,
IN HANDLE hFile,
IN DWORD nNumberOfBytesToWrite,
IN DWORD nNumberOfBytesPerSend,
IN LPOVERLAPPED lpOverlapped,
IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
IN DWORD dwReserved
);
#define WSAID_TRANSMITFILE \
{0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
#endif
extern LPFN_ACCEPTEX acceptex;
extern LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs;
extern LPFN_TRANSMITFILE transmitfile;

View file

@ -7,13 +7,9 @@
#define STRICT
#define WIN32_LEAN_AND_MEAN
#ifdef __WATCOMC__
#pragma disable_message(107)
#endif
/*
* we need to include windows.h explicity before winsock2.h because
* warning 4201 is enabled in windows.h
* the warning 4201 is enabled in windows.h
*/
#include <windows.h>
@ -35,19 +31,16 @@
#pragma warning(disable:4100)
/* STUB */
#if 0
#pragma warning(disable:4127)
#endif
#endif
#ifdef __WATCOMC__
#pragma enable_message(107)
#if 0
/* Symbol 'ngx_rbtree_min' has been defined, but not referenced */
/* disable "Symbol 'ngx_rbtree_min' has been defined, but not referenced" */
#pragma disable_message(202)
#endif
/* No prototype found for 'stricmp' */
#pragma disable_message(301)
#endif
#include <ngx_auto_config.h>

View file

@ -17,6 +17,13 @@ ngx_os_io_t ngx_os_io = {
};
typedef struct {
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
} ngx_osviex_stub_t;
/* Should these pointers be per protocol ? */
LPFN_ACCEPTEX acceptex;
LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs;
@ -29,11 +36,12 @@ static GUID tf_guid = WSAID_TRANSMITFILE;
int ngx_os_init(ngx_log_t *log)
{
u_int osviex;
DWORD bytes;
SOCKET s;
WSADATA wsd;
OSVERSIONINFOEX osvi;
u_int osviex;
DWORD bytes;
SOCKET s;
WSADATA wsd;
OSVERSIONINFOEX osvi;
ngx_osviex_stub_t *osviex_stub;
/* get Windows version */
@ -75,17 +83,16 @@ int ngx_os_init(ngx_log_t *log)
ngx_win32_version += osvi.wServicePackMajor * 10
+ osvi.wServicePackMinor;
ngx_log_error(NGX_LOG_INFO, log, 0,
"OS: %u build:%u, \"%s\", suite:%x, type:%u",
ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
osvi.wReserved[0], osvi.wReserved[1]);
/*
* the MSVC 6.0 SP2 defines wSuiteMask and wProductType
* as WORD wReserved[2]
*/
osviex_stub = (ngx_osviex_stub_t *) &osvi.wServicePackMinor;
#if 0
ngx_log_error(NGX_LOG_INFO, log, 0,
"OS: %u build:%u, \"%s\", suite:%x, type:%u",
ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
osvi.wSuiteMask, osvi.wProductType);
#endif
osviex_stub->wSuiteMask, osviex_stub->wProductType);
} else {
if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
@ -123,6 +130,10 @@ int ngx_os_init(ngx_log_t *log)
return NGX_ERROR;
}
if (ngx_win32_version < NGX_WIN_NT) {
return NGX_OK;
}
/* get AcceptEx(), GetAcceptExSockAddrs() and TransmitFile() addresses */
s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0);

View file

@ -64,7 +64,7 @@ ssize_t ngx_overlapped_wsarecv(ngx_connection_t *c, char *buf, size_t size)
rev = c->read;
if (!rev->ready) {
ngx_log_error(NGX_LOG_ALERT, rev->log, 0, "second wsa post");
ngx_log_error(NGX_LOG_ALERT, c->log, 0, "second wsa post");
return NGX_AGAIN;
}