nginx-0.0.1-2003-06-11-19:28:34 import
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 295e2a9..4f3be98 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -2,9 +2,7 @@
#include <ngx_config.h>
#include <ngx_core.h>
-
-#include <ngx_listen.h>
-
+#include <ngx_event.h>
#include <nginx.h>
@@ -61,7 +59,7 @@
{
ngx_init_array(ngx_listening_sockets,
- ngx_pool, 10, sizeof(ngx_listen_t),
+ ngx_pool, 10, sizeof(ngx_listening_t),
1);
ngx_memzero(&conf, sizeof(ngx_conf_t));
@@ -126,10 +124,10 @@
static int ngx_open_listening_sockets(ngx_log_t *log)
{
- int times, failed, reuseaddr, i;
- ngx_err_t err;
- ngx_socket_t s;
- ngx_listen_t *ls;
+ int times, failed, reuseaddr, i;
+ ngx_err_t err;
+ ngx_socket_t s;
+ ngx_listening_t *ls;
reuseaddr = 1;
@@ -137,7 +135,8 @@
failed = 0;
/* for each listening socket */
- ls = (ngx_listen_t *) ngx_listening_sockets.elts;
+
+ ls = ngx_listening_sockets.elts;
for (i = 0; i < ngx_listening_sockets.nelts; i++) {
if (ls[i].bound)
@@ -161,6 +160,19 @@
return NGX_ERROR;
}
+#if (WIN32)
+ /*
+ * Winsock assignes a socket number divisible by 4
+ * so to find a connection we divide a socket number by 4.
+ */
+
+ if (s % 4) {
+ ngx_log_error(NGX_LOG_EMERG, ls->log, 0,
+ ngx_socket_n " created socket %d", s);
+ return NGX_ERROR;
+ }
+#endif
+
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
(const void *) &reuseaddr, sizeof(int)) == -1) {
ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
diff --git a/src/core/ngx_conf_file.h b/src/core/ngx_conf_file.h
index b517ff0..046ee2c 100644
--- a/src/core/ngx_conf_file.h
+++ b/src/core/ngx_conf_file.h
@@ -123,8 +123,8 @@
}
#define ngx_conf_merge_size_value(conf, prev, default) \
- if (conf == (size_t) NGX_CONF_UNSET) { \
- conf = (prev == (size_t) NGX_CONF_UNSET) ? default : prev; \
+ if (conf == (ssize_t) NGX_CONF_UNSET) { \
+ conf = (prev == (ssize_t) NGX_CONF_UNSET) ? default : prev; \
}
#define ngx_conf_merge_str_value(conf, prev, default) \
diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h
index 81b5987..1bd97f2 100644
--- a/src/core/ngx_connection.h
+++ b/src/core/ngx_connection.h
@@ -1,45 +1,98 @@
#ifndef _NGX_CONNECTION_H_INCLUDED_
#define _NGX_CONNECTION_H_INCLUDED_
+
#include <ngx_config.h>
#include <ngx_core.h>
-#include <ngx_event.h>
+
+
+typedef struct {
+ ngx_socket_t fd;
+
+ struct sockaddr *sockaddr;
+ socklen_t socklen; /* size of sockaddr */
+ int addr; /* offset to address in sockaddr */
+ int addr_text_max_len;
+ ngx_str_t addr_text;
+
+ int family;
+ int type;
+ int protocol;
+ int flags; /* Winsock2 flags */
+
+ void (*handler)(ngx_connection_t *c); /* handler of accepted
+ connection */
+ void *ctx; /* ngx_http_conf_ctx_t, for example */
+ void *servers; /* array of ngx_http_in_addr_t, for example */
+
+ ngx_log_t *log;
+ int backlog;
+
+ int pool_size;
+ int post_accept_buffer_size; /* should be here because
+ of the AcceptEx() preread */
+ time_t post_accept_timeout; /* should be here because
+ of the deferred accept */
+
+ unsigned bound:1; /* already bound */
+ unsigned inherited:1; /* inherited from previous process */
+ unsigned nonblocking_accept:1;
+ unsigned nonblocking:1;
+#if 0
+ unsigned overlapped:1; /* Winsock2 overlapped */
+#endif
+ unsigned shared:1; /* shared between threads or processes */
+#if (HAVE_DEFERRED_ACCEPT)
+ unsigned deferred_accept:1;
+#endif
+} ngx_listening_t;
struct ngx_connection_s {
- ngx_socket_t fd;
- void *data;
-
-#ifdef NGX_EVENT
+ void *data;
ngx_event_t *read;
ngx_event_t *write;
-#endif
+
+ ngx_socket_t fd;
+
+ ngx_listening_t *listening;
off_t sent;
+#if 0
void (*handler)(ngx_connection_t *c);
+#endif
void *ctx;
void *servers;
+
ngx_log_t *log;
ngx_pool_t *pool;
+#if 0
int pool_size;
int family;
+#endif
+
struct sockaddr *sockaddr;
socklen_t socklen;
+ ngx_str_t addr_text;
+
#if (HAVE_IOCP)
struct sockaddr *local_sockaddr;
socklen_t local_socklen;
- void *listening;
#endif
+
+#if 0
int addr;
int addr_text_max_len;
- ngx_str_t addr_text;
+#endif
ngx_hunk_t *buffer;
+#if 0
unsigned int post_accept_timeout;
+#endif
int number;
@@ -47,9 +100,15 @@
unsigned unexpected_eof:1;
unsigned tcp_nopush:1;
unsigned tcp_nopush_enabled:1;
+#if (HAVE_IOCP)
+ unsigned accept_context_updated:1;
+#endif
};
+
+
+
#if 0
cached file
int fd; -2 unused, -1 closed (but read or mmaped), >=0 open
@@ -84,8 +143,9 @@
#endif
-extern ngx_os_io_t ngx_io;
+extern ngx_array_t ngx_listening_sockets;
+extern ngx_os_io_t ngx_io;
extern ngx_chain_t *(*ngx_write_chain_proc)
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index 55807ef..3da25f0 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -77,7 +77,7 @@
/* pid#tid */
len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1,
- "%d#%d: ", ngx_getpid(), 0);
+ PID_FMT "#%d: ", ngx_getpid(), 0);
#if (HAVE_VARIADIC_MACROS)
va_start(args, fmt);
diff --git a/src/core/ngx_modules.c b/src/core/ngx_modules.c
index 4780570..0dbcde6 100644
--- a/src/core/ngx_modules.c
+++ b/src/core/ngx_modules.c
@@ -17,11 +17,10 @@
#if (HAVE_DEVPOLL)
extern ngx_module_t ngx_devpoll_module;
#endif
-#if (HAVE_AIO)
-extern ngx_module_t ngx_aio_module;
-#endif
#if (HAVE_IOCP)
extern ngx_module_t ngx_iocp_module;
+#elif (HAVE_AIO)
+extern ngx_module_t ngx_aio_module;
#endif
@@ -64,11 +63,10 @@
#if (HAVE_DEVPOLL)
&ngx_devpoll_module,
#endif
-#if (HAVE_AIO)
- &ngx_aio_module,
-#endif
#if (HAVE_IOCP)
&ngx_iocp_module,
+#elif (HAVE_AIO)
+ &ngx_aio_module,
#endif
/* http */