nginx-0.0.1-2003-07-01-19:00:03 import
This commit is contained in:
parent
50cba254a4
commit
8659ea9772
13 changed files with 391 additions and 119 deletions
432
src/core/nginx.c
432
src/core/nginx.c
|
@ -23,6 +23,346 @@ int ngx_connection_counter;
|
|||
ngx_array_t ngx_listening_sockets;
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
int main(int argc, char *const *argv)
|
||||
{
|
||||
int i;
|
||||
ngx_str_t conf_file;
|
||||
ngx_log_t *log;
|
||||
ngx_pool_t *pool;
|
||||
ngx_conf_t conf;
|
||||
|
||||
ngx_max_sockets = -1;
|
||||
|
||||
log = ngx_log_init_errlog();
|
||||
|
||||
if (ngx_os_init(log) == NGX_ERROR) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ngx_max_module = 0;
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
ngx_modules[i]->index = ngx_max_module++;
|
||||
}
|
||||
|
||||
ngx_test_null(pool, ngx_create_pool(16 * 1024, log), 1);
|
||||
ngx_test_null(cycle, ngx_pcalloc(pool, sizeof(ngx_cycle_t)), 1);
|
||||
cycle->pool = pool;
|
||||
|
||||
if (ngx_init_conf(cycle) == NGX_ERROR) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* daemon */
|
||||
|
||||
/* life cycle */
|
||||
|
||||
for ( ;; ) {
|
||||
|
||||
/* forks */
|
||||
|
||||
ngx_init_temp_number();
|
||||
|
||||
/* threads */
|
||||
|
||||
for ( ;; ) {
|
||||
|
||||
worker(cycle->log);
|
||||
|
||||
pool = ngx_create_pool(16 * 1024, cycle->log);
|
||||
|
||||
if (pool == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
new_cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
|
||||
|
||||
if (new_cycle == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
continue;
|
||||
}
|
||||
|
||||
new_cycle->pool = pool;
|
||||
|
||||
if (ngx_init_conf(new_cycle, cycle->log) == NGX_ERROR) {
|
||||
ngx_destroy_pool(new_cycle->pool);
|
||||
continue;
|
||||
}
|
||||
|
||||
nls = new_cycle->listening.elts;
|
||||
for (n = 0; n < new_cycle->listening.nelts; n++) {
|
||||
ls = cycle->listening.elts;
|
||||
for (i = 0; i < cycle->listening.nelts; i++) {
|
||||
if (ngx_memcmp(nls[n].sockaddr,
|
||||
ls[i].sockaddr, ls[i].socklen) == 0)
|
||||
{
|
||||
nls[n].fd = ls[i].fd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (nls[n].fd == -1) {
|
||||
nls[n].new = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (ngx_open_listening_sockets(new_cycle) == NGX_ERROR) {
|
||||
for (n = 0; n < new_cycle->listening.nelts; n++) {
|
||||
if (nls[n].new && nls[n].fd != -1) {
|
||||
if (ngx_close_socket(nls[n].fd) == -1)
|
||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||
ngx_close_socket_n " %s failed",
|
||||
nls[n].addr_text.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ngx_destroy_pool(new_cycle->pool);
|
||||
continue;
|
||||
}
|
||||
|
||||
new_cycle->log = new log;
|
||||
|
||||
ngx_destroy_pool(cycle->pool);
|
||||
|
||||
cycle = new_cycle;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ngx_init_cycle(ngx_cycle_t *old_cycle, ngx_log_t *log)
|
||||
{
|
||||
int n;
|
||||
ngx_conf_t conf;
|
||||
ngx_pool_t *pool;
|
||||
ngx_cycle_t *cycle;
|
||||
|
||||
|
||||
pool = ngx_create_pool(16 * 1024, log);
|
||||
if (pool == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cycle = ngx_pcalloc(pool, sizeof(ngx_cycle_t));
|
||||
if (cycle == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
cycle->pool = pool;
|
||||
|
||||
n = old_cycle ? old_cycle->open_files.nelts : 20;
|
||||
cycle->open_files.elts = ngx_pcalloc(pool, n * sizeof(ngx_open_file_t));
|
||||
if (cycle->open_files.elts == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
cycle->open_files.nelts = 0;
|
||||
cycle->open_files.size = sizeof(ngx_open_file_t);
|
||||
cycle->open_files.nalloc = n;
|
||||
cycle->open_files.pool = pool;
|
||||
|
||||
n = old_cycle ? old_cycle->listening.nelts : 10;
|
||||
cycle->listening.elts = ngx_pcalloc(pool, n * sizeof(ngx_listening_t));
|
||||
if (cycle->listening.elts == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
cycle->listening.nelts = 0;
|
||||
cycle->listening.size = sizeof(ngx_listening_t);
|
||||
cycle->listening.nalloc = n;
|
||||
cycle->listening.pool = pool;
|
||||
|
||||
cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
|
||||
if (cycle->conf_ctx == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ngx_memzero(&conf, sizeof(ngx_conf_t));
|
||||
/* STUB: init array ? */
|
||||
conf.args = ngx_create_array(pool, 10, sizeof(ngx_str_t));
|
||||
if (conf.args == NULL) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
conf.ctx = cycle->conf_ctx;
|
||||
conf.cycle = cycle;
|
||||
/* STUB */ conf.pool = cycle->pool;
|
||||
conf.log = log;
|
||||
conf.module_type = NGX_CORE_MODULE;
|
||||
conf.cmd_type = NGX_MAIN_CONF;
|
||||
|
||||
conf_file.len = sizeof(NGINX_CONF) - 1;
|
||||
conf_file.data = NGINX_CONF;
|
||||
|
||||
if (ngx_conf_parse(&conf, &conf_file) != NGX_CONF_OK) {
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->init_module) {
|
||||
if (ngx_modules[i]->init_module(cycle, log) == NGX_ERROR)
|
||||
{
|
||||
failed = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!failed) {
|
||||
file = cycle->open_files.elts;
|
||||
for (i = 0; i < cycle->open_files.nelts; i++) {
|
||||
if (file->name.data = NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
file->fd = ngx_open_file(file->name.data,
|
||||
NGX_FILE_RDWR,
|
||||
NGX_FILE_CREATE_OR_OPEN|NGX_FILE_APPEND);
|
||||
|
||||
if (file->fd == NGX_INVALID_FILE) {
|
||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
|
||||
ngx_open_file_n " \"%s\" failed",
|
||||
file->name.data);
|
||||
failed = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
/* TODO: Win32 append */
|
||||
}
|
||||
}
|
||||
|
||||
if (!failed) {
|
||||
if (ngx_open_listening_sockets(new_cycle) == NGX_ERROR) {
|
||||
failed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (failed) {
|
||||
|
||||
/* rollback the new cycle configuration */
|
||||
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->rollback_module) {
|
||||
ngx_modules[i]->rollback_module(cycle);
|
||||
}
|
||||
}
|
||||
|
||||
file = cycle->open_files.elts;
|
||||
for (i = 0; i < cycle->open_files.nelts; i++) {
|
||||
if (file->fd != NGX_INVALID_FILE) {
|
||||
if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
|
||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
|
||||
ngx_close_file_n " \"%s\" failed",
|
||||
file->name.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ls[i] = cycle->listening.elts;
|
||||
for (i = 0; i < cycle->listening.nelts; i++) {
|
||||
if (ls[i].new && ls[i].fd != -1) {
|
||||
if (ngx_close_socket(ls[i].fd) == -1)
|
||||
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
|
||||
ngx_close_socket_n " %s failed",
|
||||
ls[i].addr_text.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ngx_destroy_pool(pool);
|
||||
return NULL;
|
||||
|
||||
} else {
|
||||
|
||||
/* commit the new cycle configuration */
|
||||
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->commit_module) {
|
||||
ngx_modules[i]->commit_module(cycle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
new_cycle->log = ???;
|
||||
pool->log = ???;
|
||||
|
||||
return cycle;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------
|
||||
|
||||
ngx_init_array(cycle->listening, cycle->pool, 10, sizeof(ngx_listening_t),
|
||||
NGX_ERROR);
|
||||
|
||||
ngx_memzero(&conf, sizeof(ngx_conf_t));
|
||||
|
||||
ngx_test_null(conf.args,
|
||||
ngx_create_array(cycle->pool, 10, sizeof(ngx_str_t)),
|
||||
NGX_ERROR);
|
||||
|
||||
ngx_test_null(cycle->conf_ctx,
|
||||
ngx_pcalloc(cycle->pool, ngx_max_module * sizeof(void *)),
|
||||
NGX_ERROR);
|
||||
|
||||
conf.ctx = cycle->conf_ctx;
|
||||
conf.cycle = cycle;
|
||||
/* STUB */ conf.pool = cycle->pool; conf.log = cycle->log;
|
||||
conf.module_type = NGX_CORE_MODULE;
|
||||
conf.cmd_type = NGX_MAIN_CONF;
|
||||
|
||||
conf_file.len = sizeof(NGINX_CONF) - 1;
|
||||
conf_file.data = NGINX_CONF;
|
||||
|
||||
if (ngx_conf_parse(&conf, &conf_file) == NGX_CONF_OK) {
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->init_module) {
|
||||
if (ngx_modules[i]->init_module(pool) == NGX_ERROR) {
|
||||
failed = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
failed = 1;
|
||||
}
|
||||
|
||||
if (failed) {
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->rollback_module) {
|
||||
ngx_modules[i]->rollback_module(pool);
|
||||
}
|
||||
}
|
||||
|
||||
return NGX_ERROR;
|
||||
|
||||
} else {
|
||||
for (i = 0; ngx_modules[i]; i++) {
|
||||
if (ngx_modules[i]->commit_module) {
|
||||
ngx_modules[i]->commit_module(pool);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
int main(int argc, char *const *argv)
|
||||
{
|
||||
int i;
|
||||
|
@ -44,61 +384,6 @@ int main(int argc, char *const *argv)
|
|||
ngx_modules[i]->index = ngx_max_module++;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
ngx_test_null(cycle->pool, ngx_create_pool(16 * 1024, log), 1);
|
||||
|
||||
if (ngx_init_conf(cycle) == NGX_ERROR) {
|
||||
ngx_destroy_pool(cycle->pool);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* daemon */
|
||||
|
||||
/* life cycle */
|
||||
|
||||
{
|
||||
|
||||
/* forks */
|
||||
|
||||
/* threads */
|
||||
|
||||
for ( ;; ) {
|
||||
worker;
|
||||
|
||||
new_cycle = ngx_calloc(sizeof(ngx_cycle_t), cycle->log);
|
||||
|
||||
if (new_cycle == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
new_cycle->pool = ngx_create_pool(16 * 1024, cycle->log);
|
||||
|
||||
if (new_cycle->pool == NULL) {
|
||||
ngx_free(new_cycle);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ngx_init_conf(new_cycle) == NGX_ERROR) {
|
||||
ngx_destroy_pool(new_cycle->pool);
|
||||
ngx_free(new_cycle);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* update bound listening */
|
||||
|
||||
ngx_destroy_pool(cycle->pool);
|
||||
ngx_free(cycle);
|
||||
|
||||
cycle = new_cycle;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#endif
|
||||
|
||||
/* life cycle */
|
||||
|
||||
{
|
||||
|
@ -169,43 +454,6 @@ int main(int argc, char *const *argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
static int ngx_init_conf(ngx_cycle_t *cycle)
|
||||
{
|
||||
ngx_conf_t conf;
|
||||
|
||||
ngx_init_array(cycle->listening, cycle->pool, 10, sizeof(ngx_listening_t),
|
||||
NGX_ERROR);
|
||||
|
||||
ngx_memzero(&conf, sizeof(ngx_conf_t));
|
||||
|
||||
ngx_test_null(conf.args,
|
||||
ngx_create_array(cycle->pool, 10, sizeof(ngx_str_t)),
|
||||
NGX_ERROR);
|
||||
|
||||
ngx_test_null(ngx_conf_ctx,
|
||||
ngx_pcalloc(cycle->pool, ngx_max_module * sizeof(void *)),
|
||||
NGX_ERROR);
|
||||
|
||||
conf.ctx = ngx_conf_ctx;
|
||||
conf.pool = cycle->pool;
|
||||
conf.log = cycle->log;
|
||||
conf.module_type = NGX_CORE_MODULE;
|
||||
conf.cmd_type = NGX_MAIN_CONF;
|
||||
|
||||
conf_file.len = sizeof(NGINX_CONF) - 1;
|
||||
conf_file.data = NGINX_CONF;
|
||||
|
||||
if (ngx_conf_parse(&conf, &conf_file) != NGX_CONF_OK) {
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
static int ngx_open_listening_sockets(ngx_log_t *log)
|
||||
{
|
||||
|
|
|
@ -83,7 +83,9 @@ typedef struct {
|
|||
ngx_pool_t *pool;
|
||||
ngx_log_t *log;
|
||||
ngx_array_t listening;
|
||||
ngx_array_t files;
|
||||
ngx_array_t open_files;
|
||||
|
||||
unsigned one_process:1;
|
||||
} ngx_cycle_t;
|
||||
|
||||
|
||||
|
@ -95,6 +97,7 @@ struct ngx_conf_s {
|
|||
char *name;
|
||||
ngx_array_t *args;
|
||||
|
||||
ngx_cycle_t *cycle;
|
||||
ngx_pool_t *pool;
|
||||
ngx_conf_file_t *conf_file;
|
||||
ngx_log_t *log;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
extern ngx_module_t ngx_errlog_module;
|
||||
|
||||
extern ngx_module_t ngx_events_module;
|
||||
extern ngx_module_t ngx_event_module;
|
||||
extern ngx_module_t ngx_event_core_module;
|
||||
extern ngx_module_t ngx_select_module;
|
||||
#if (HAVE_POLL)
|
||||
extern ngx_module_t ngx_poll_module;
|
||||
|
@ -51,7 +51,7 @@ ngx_module_t *ngx_modules[] = {
|
|||
/* events */
|
||||
|
||||
&ngx_events_module,
|
||||
&ngx_event_module,
|
||||
&ngx_event_core_module,
|
||||
|
||||
&ngx_select_module,
|
||||
#if (HAVE_POLL)
|
||||
|
|
|
@ -18,8 +18,6 @@ typedef struct {
|
|||
|
||||
#if (WIN32)
|
||||
|
||||
#define ngx_memzero ZeroMemory
|
||||
|
||||
#define ngx_strncasecmp strnicmp
|
||||
#define ngx_strcasecmp stricmp
|
||||
#define ngx_strncmp strncmp
|
||||
|
@ -32,8 +30,6 @@ typedef struct {
|
|||
|
||||
#else
|
||||
|
||||
#define ngx_memzero bzero
|
||||
|
||||
#define ngx_strncasecmp strncasecmp
|
||||
#define ngx_strcasecmp strcasecmp
|
||||
#define ngx_strncmp strncmp
|
||||
|
@ -46,9 +42,19 @@ typedef struct {
|
|||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* msvc and icc compile memset() to inline "rep stos"
|
||||
* while ZeroMemory and bzero are calls.
|
||||
*/
|
||||
#define ngx_memzero(buf, n) memset(buf, n, 0)
|
||||
|
||||
/* msvc and icc compile memcpy() to inline "rep movs" */
|
||||
#define ngx_memcpy(dst, src, n) memcpy(dst, src, n)
|
||||
#define ngx_cpymem(dst, src, n) ((char *) memcpy(dst, src, n)) + n
|
||||
|
||||
/* msvc and icc compile memcmp() to inline loop */
|
||||
#define ngx_memcmp memcmp
|
||||
|
||||
char *ngx_cpystrn(char *dst, char *src, size_t n);
|
||||
int ngx_rstrncmp(char *s1, char *s2, size_t n);
|
||||
int ngx_atoi(char *line, size_t n);
|
||||
|
|
|
@ -58,7 +58,7 @@ static int ngx_poll_init(ngx_log_t *log)
|
|||
{
|
||||
ngx_event_conf_t *ecf;
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
ngx_test_null(event_list,
|
||||
ngx_alloc(sizeof(struct pollfd) * ecf->connections, log),
|
||||
|
|
|
@ -70,7 +70,7 @@ static int ngx_select_init(ngx_log_t *log)
|
|||
{
|
||||
ngx_event_conf_t *ecf;
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
FD_ZERO(&master_read_fd_set);
|
||||
FD_ZERO(&master_write_fd_set);
|
||||
|
@ -376,7 +376,7 @@ static char *ngx_select_init_conf(ngx_pool_t *pool, void *conf)
|
|||
{
|
||||
ngx_event_conf_t *ecf;
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
/* the default FD_SETSIZE is 1024U in FreeBSD 5.x */
|
||||
|
||||
|
|
|
@ -65,9 +65,9 @@ ngx_module_t ngx_events_module = {
|
|||
};
|
||||
|
||||
|
||||
static ngx_str_t event_name = ngx_string("event");
|
||||
static ngx_str_t event_core_name = ngx_string("event_core");
|
||||
|
||||
static ngx_command_t ngx_event_commands[] = {
|
||||
static ngx_command_t ngx_event_core_commands[] = {
|
||||
|
||||
{ngx_string("connections"),
|
||||
NGX_EVENT_CONF|NGX_CONF_TAKE1,
|
||||
|
@ -94,8 +94,8 @@ static ngx_command_t ngx_event_commands[] = {
|
|||
};
|
||||
|
||||
|
||||
ngx_event_module_t ngx_event_module_ctx = {
|
||||
&event_name,
|
||||
ngx_event_module_t ngx_event_core_module_ctx = {
|
||||
&event_core_name,
|
||||
ngx_event_create_conf, /* create configuration */
|
||||
ngx_event_init_conf, /* init configuration */
|
||||
|
||||
|
@ -103,10 +103,10 @@ ngx_event_module_t ngx_event_module_ctx = {
|
|||
};
|
||||
|
||||
|
||||
ngx_module_t ngx_event_module = {
|
||||
ngx_module_t ngx_event_core_module = {
|
||||
NGX_MODULE,
|
||||
&ngx_event_module_ctx, /* module context */
|
||||
ngx_event_commands, /* module directives */
|
||||
&ngx_event_core_module_ctx, /* module context */
|
||||
ngx_event_core_commands, /* module directives */
|
||||
NGX_EVENT_MODULE, /* module type */
|
||||
NULL /* init module */
|
||||
};
|
||||
|
@ -125,7 +125,7 @@ int ngx_pre_thread(ngx_array_t *ls, ngx_pool_t *pool, ngx_log_t *log)
|
|||
ngx_iocp_conf_t *iocpcf;
|
||||
#endif
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
ngx_log_debug(log, "CONN: %d" _ ecf->connections);
|
||||
ngx_log_debug(log, "TYPE: %d" _ ecf->use);
|
||||
|
|
|
@ -345,7 +345,7 @@ typedef struct {
|
|||
|
||||
|
||||
extern ngx_module_t ngx_events_module;
|
||||
extern ngx_module_t ngx_event_module;
|
||||
extern ngx_module_t ngx_event_core_module;
|
||||
|
||||
|
||||
#define ngx_event_get_conf(module) \
|
||||
|
|
|
@ -17,7 +17,7 @@ void ngx_event_accept(ngx_event_t *ev)
|
|||
ngx_connection_t *c, *ls;
|
||||
ngx_event_conf_t *ecf;
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
ls = ev->data;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ int ngx_event_timer_init(ngx_log_t *log)
|
|||
ngx_event_t *new_queue;
|
||||
ngx_event_conf_t *ecf;
|
||||
|
||||
ecf = ngx_event_get_conf(ngx_event_module);
|
||||
ecf = ngx_event_get_conf(ngx_event_core_module);
|
||||
|
||||
if (ngx_timer_queue_num < ecf->timer_queues) {
|
||||
ngx_test_null(new_queue,
|
||||
|
|
|
@ -83,7 +83,8 @@ int ngx_crc(char *data, size_t len)
|
|||
|
||||
for (sum = 0; len; len--) {
|
||||
/*
|
||||
* gcc 2.95.2 x86 compiles that operator into the single rol opcode.
|
||||
* gcc 2.95.2 x86 and icc 7.1.006 compile that operator
|
||||
* into the single rol opcode.
|
||||
* msvc 6.0sp2 compiles it into four opcodes.
|
||||
*/
|
||||
sum = sum >> 1 | sum << 31;
|
||||
|
|
|
@ -34,7 +34,7 @@ int ngx_strerror_r(ngx_err_t err, char *errstr, size_t size)
|
|||
ngx_err_t format_error;
|
||||
|
||||
len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
|
||||
| FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
|FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, err,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
errstr, size, NULL);
|
||||
|
|
|
@ -77,20 +77,34 @@ int ngx_os_init(ngx_log_t *log)
|
|||
+ osvi.wServicePackMinor;
|
||||
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0,
|
||||
"OS: %u build:%u, %s, suite:%x, type:%u",
|
||||
"OS: %u build:%u, \"%s\", suite:%x, type:%u",
|
||||
ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
|
||||
osvi.wReserved[0], osvi.wReserved[1]);
|
||||
|
||||
#if 0
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0,
|
||||
"OS: %u build:%u, %s, suite:%x, type:%u",
|
||||
"OS: %u build:%u, \"%s\", suite:%x, type:%u",
|
||||
ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
|
||||
osvi.wSuiteMask, osvi.wProductType);
|
||||
#endif
|
||||
|
||||
} else {
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %u build:%u, %s",
|
||||
ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion);
|
||||
if (osvi.dwPlatformId == 1) {
|
||||
|
||||
/* Win9x build */
|
||||
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %u build:%u.%u.%u, \"%s\"",
|
||||
ngx_win32_version,
|
||||
osvi.dwBuildNumber >> 24,
|
||||
(osvi.dwBuildNumber >> 16) & 0xff,
|
||||
osvi.dwBuildNumber & 0xffff,
|
||||
osvi.szCSDVersion);
|
||||
|
||||
} else {
|
||||
ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %u build:%u, \"%s\"",
|
||||
ngx_win32_version, osvi.dwBuildNumber,
|
||||
osvi.szCSDVersion);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue