summaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/modules/ngx_epoll_module.c8
-rw-r--r--src/event/ngx_event.c25
-rw-r--r--src/event/ngx_event.h1
-rw-r--r--src/event/ngx_event_accept.c10
-rw-r--r--src/event/ngx_event_pipe.c12
5 files changed, 27 insertions, 29 deletions
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index d866ffd48..e47666751 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -241,7 +241,7 @@ ngx_epoll_add_event(ngx_event_t *ev, int event, u_int flags)
}
ee.events = events | flags;
- ee.data.u64 = (uintptr_t) c | ev->instance;
+ ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);
ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
"epoll add event: fd:%d op:%d ev:%08XD",
@@ -296,7 +296,7 @@ ngx_epoll_del_event(ngx_event_t *ev, int event, u_int flags)
if (e->active) {
op = EPOLL_CTL_MOD;
ee.events = prev | flags;
- ee.data.u64 = (uintptr_t) c | ev->instance;
+ ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);
} else {
op = EPOLL_CTL_DEL;
@@ -326,7 +326,7 @@ ngx_epoll_add_connection(ngx_connection_t *c)
struct epoll_event ee;
ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
- ee.data.u64 = (uintptr_t) c | c->read->instance;
+ ee.data.ptr = (void *) ((uintptr_t) c | c->read->instance);
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
"epoll add connection: fd:%d ev:%08XD", c->fd, ee.events);
@@ -367,7 +367,7 @@ ngx_epoll_del_connection(ngx_connection_t *c, u_int flags)
op = EPOLL_CTL_DEL;
ee.events = 0;
- ee.data.u64 = 0;
+ ee.data.ptr = NULL;
if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index a347e1c3d..672eac2ba 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -48,7 +48,6 @@ ngx_atomic_t *ngx_connection_counter = &connection_counter;
ngx_atomic_t *ngx_accept_mutex_ptr;
-ngx_atomic_t *ngx_accept_mutex_last_owner;
ngx_atomic_t *ngx_accept_mutex;
ngx_uint_t ngx_accept_mutex_held;
ngx_msec_t ngx_accept_mutex_delay;
@@ -255,7 +254,7 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
}
if (ngx_accept_mutex_held) {
- *ngx_accept_mutex = 0;
+ (void) ngx_atomic_cmp_set(ngx_accept_mutex, ngx_pid, 0);
}
if (delta) {
@@ -471,7 +470,6 @@ ngx_event_module_init(ngx_cycle_t *cycle)
/* TODO: adjust cache line size, 128 is P4 cache line size */
size = 128 /* ngx_accept_mutex */
- + 128 /* ngx_accept_mutex_last_owner */
+ 128; /* ngx_connection_counter */
#if (NGX_STAT_STUB)
@@ -491,17 +489,16 @@ ngx_event_module_init(ngx_cycle_t *cycle)
}
ngx_accept_mutex_ptr = (ngx_atomic_t *) shared;
- ngx_accept_mutex_last_owner = (ngx_atomic_t *) (shared + 1 * 128);
- ngx_connection_counter = (ngx_atomic_t *) (shared + 2 * 128);
+ ngx_connection_counter = (ngx_atomic_t *) (shared + 1 * 128);
#if (NGX_STAT_STUB)
- ngx_stat_accepted = (ngx_atomic_t *) (shared + 3 * 128);
- ngx_stat_handled = (ngx_atomic_t *) (shared + 4 * 128);
- ngx_stat_requests = (ngx_atomic_t *) (shared + 5 * 128);
- ngx_stat_active = (ngx_atomic_t *) (shared + 6 * 128);
- ngx_stat_reading = (ngx_atomic_t *) (shared + 7 * 128);
- ngx_stat_writing = (ngx_atomic_t *) (shared + 8 * 128);
+ ngx_stat_accepted = (ngx_atomic_t *) (shared + 2 * 128);
+ ngx_stat_handled = (ngx_atomic_t *) (shared + 3 * 128);
+ ngx_stat_requests = (ngx_atomic_t *) (shared + 4 * 128);
+ ngx_stat_active = (ngx_atomic_t *) (shared + 5 * 128);
+ ngx_stat_reading = (ngx_atomic_t *) (shared + 6 * 128);
+ ngx_stat_writing = (ngx_atomic_t *) (shared + 7 * 128);
#endif
@@ -919,6 +916,12 @@ ngx_event_connections(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return "is duplicate" ;
}
+ if (ngx_strcmp(cmd->name.data, "connections") == 0) {
+ ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
+ "the \"connections\" directive is deprecated, "
+ "use the \"worker_connections\" directive instead");
+ }
+
value = cf->args->elts;
ecf->connections = ngx_atoi(value[1].data, value[1].len);
if (ecf->connections == (ngx_uint_t) NGX_ERROR) {
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index 215463578..be943ae4d 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -438,7 +438,6 @@ typedef struct {
extern ngx_atomic_t *ngx_connection_counter;
extern ngx_atomic_t *ngx_accept_mutex_ptr;
-extern ngx_atomic_t *ngx_accept_mutex_last_owner;
extern ngx_atomic_t *ngx_accept_mutex;
extern ngx_uint_t ngx_accept_mutex_held;
extern ngx_msec_t ngx_accept_mutex_delay;
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index fb43af432..afb1a1f3b 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -265,9 +265,7 @@ ngx_trylock_accept_mutex(ngx_cycle_t *cycle)
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"accept mutex locked");
- if (ngx_accept_mutex_held
- && (!(ngx_event_flags & NGX_USE_RTSIG_EVENT)
- || *ngx_accept_mutex_last_owner == (ngx_atomic_t) ngx_pid))
+ if (ngx_accept_mutex_held && !(ngx_event_flags & NGX_USE_RTSIG_EVENT))
{
return NGX_OK;
}
@@ -308,16 +306,10 @@ ngx_enable_accept_events(ngx_cycle_t *cycle)
if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
- if (ngx_accept_mutex_held) {
- c->read->disabled = 1;
- }
-
if (ngx_add_conn(c) == NGX_ERROR) {
return NGX_ERROR;
}
- *ngx_accept_mutex_last_owner = ngx_pid;
-
} else {
if (ngx_add_event(c->read, NGX_READ_EVENT, 0) == NGX_ERROR) {
return NGX_ERROR;
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index 9970ed328..779ec1867 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -122,6 +122,8 @@ ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
} else {
+#if (NGX_HAVE_KQUEUE)
+
/*
* kqueue notifies about the end of file or a pending error.
* This test allows not to allocate a buf on these conditions
@@ -129,14 +131,15 @@ ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
*/
if (p->upstream->read->available == 0
- && p->upstream->read->pending_eof)
+ && p->upstream->read->pending_eof
+ /* FreeBSD 5.x-6.x may erroneously report ETIMEDOUT */
+ && p->upstream->read->kq_errno != NGX_ETIMEDOUT)
{
p->upstream->read->ready = 0;
p->upstream->read->eof = 0;
p->upstream_eof = 1;
p->read = 1;
-#if (NGX_HAVE_KQUEUE)
if (p->upstream->read->kq_errno) {
p->upstream->read->error = 1;
p->upstream_error = 1;
@@ -144,12 +147,13 @@ ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
ngx_log_error(NGX_LOG_ERR, p->log,
p->upstream->read->kq_errno,
- "readv() failed");
+ "kevent() reported that upstream "
+ "closed connection");
}
-#endif
break;
}
+#endif
if (p->free_raw_bufs) {