aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-07-21 16:24:25 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-07-21 16:24:25 +0000
commit5b8d38832b489e7f03c74f967caee172b7d81ebc (patch)
treebaad75191afc7485c2848969c3b042e2ca27228b
parent890fc9659609396f9df4dff47a2be77cd652fe55 (diff)
downloadnginx-5b8d38832b489e7f03c74f967caee172b7d81ebc.tar.gz
nginx-5b8d38832b489e7f03c74f967caee172b7d81ebc.zip
nginx-0.0.1-2003-07-21-20:24:25 import
-rw-r--r--src/event/modules/ngx_select_module.c13
-rw-r--r--src/event/ngx_event_connect.c32
-rw-r--r--src/event/ngx_event_connect.h6
3 files changed, 33 insertions, 18 deletions
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index ff9bdbf21..7bcdd678b 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -319,6 +319,19 @@ static int ngx_select_process_events(ngx_log_t *log)
if (timer) {
#if (HAVE_SELECT_CHANGE_TIMEOUT)
delta = timer - (tv.tv_sec * 1000 + tv.tv_usec / 1000);
+
+#if 0
+ /*
+ * update the cached time if the sum of the last deltas
+ * is more than 0.5 seconds
+ */
+ deltas += delta;
+ if (deltas > 500000) {
+ ngx_cached_time = ngx_real_time();
+ deltas = 0;
+ }
+#endif
+
#else
delta = ngx_msec() - delta;
#endif
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index 8cd01d3de..a44ff0607 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -2,7 +2,7 @@
#include <ngx_event_connect.h>
-int ngx_event_connect_peer(ngx_connect_peer_t *cp)
+int ngx_event_connect_peer(ngx_peer_connecttion_t *pc)
{
time_t now;
@@ -10,21 +10,21 @@ int ngx_event_connect_peer(ngx_connect_peer_t *cp)
now = ngx_time();
- if (cp->peers->number > 1) {
+ if (pc->peers->number > 1) {
/* there are several peers */
- if (cp->tries == cp->peers->number) {
+ if (pc->tries == pc->peers->number) {
/* it's a first try - get a current peer */
/* Here is the race condition when the peers are shared between
the threads or the processes but it should not be serious */
- cp->cur_peer = cp->peers->current++;
+ pc->cur_peer = pc->peers->current++;
if (cp->peers->current >= cp->peers->number) {
- cp->peers->current = 0;
+ pc->peers->current = 0;
}
/* the end of the race condition */
@@ -32,39 +32,39 @@ int ngx_event_connect_peer(ngx_connect_peer_t *cp)
#if (NGX_MULTITHREADED || NGX_MULTIPROCESSED)
/* eliminate the sequences of the race condition */
- if (cp->cur_peer >= cp->peers->number) {
- cp->cur_peer = 0;
+ if (pc->cur_peer >= pc->peers->number) {
+ pc->cur_peer = 0;
}
#endif
}
- if (cp->peers->max_fails > 0) {
+ if (pc->peers->max_fails > 0) {
/* the peers support a fault tolerance */
for ( ;; ) {
- peer = &cp->peers->peers[cp->cur_peer];
+ peer = &pc->peers->peers[pc->cur_peer];
/* Here is the race condition when the peers are shared between
the threads or the processes but it should not be serious */
- if (peer->fails <= cp->peers->max_fails
- || (now - peer->accessed > cp->peers->fail_timeout))
+ if (peer->fails <= pc->peers->max_fails
+ || (now - peer->accessed > pc->peers->fail_timeout))
{
break;
}
/* the end of the race condition */
- cp->cur_peer++;
+ pc->cur_peer++;
- if (cp->cur_peer >= cp->peers->number) {
- cp->cur_peer = 0;
+ if (pc->cur_peer >= pc->peers->number) {
+ pc->cur_peer = 0;
}
- cp->tries--;
+ pc->tries--;
- if (cp->tries == 0) {
+ if (pc->tries == 0) {
return NGX_ERROR;
}
}
diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h
index afd4a5408..c4cf0c528 100644
--- a/src/event/ngx_event_connect.h
+++ b/src/event/ngx_event_connect.h
@@ -25,7 +25,7 @@ typedef struct {
int fail_timeout;
/* ngx_mutex_t *mutex; */
- /* ngx_connection_t *cached; */
+ ngx_connection_t *cached;
ngx_peer_t peers[1];
} ngx_peers_t;
@@ -36,8 +36,10 @@ typedef struct {
int cur_peer;
int tries;
+ ngx_connection_t *connection;
+
unsigned cached:1;
-} ngx_connect_peer_t;
+} ngx_peer_connection_t;
#endif /* _NGX_EVENT_CONNECT_H_INCLUDED_ */