summaryrefslogtreecommitdiffhomepage
path: root/src/event/ngx_event_connect.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/event/ngx_event_connect.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index c76ade1c8..32609f18d 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -38,8 +38,6 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
pc->cached = 0;
pc->connection = NULL;
- peer = &pc->peers->peers[0];
-
if (pc->peers->number > 1) {
/* there are several peers */
@@ -85,6 +83,8 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
}
}
+ peer = &pc->peers->peers[pc->cur_peer];
+
/* ngx_unlock_mutex(pc->peers->mutex); */
#if 0
@@ -182,6 +182,8 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
addr.sin_addr.s_addr = peer->addr;
addr.sin_port = peer->port;
+ngx_log_debug(pc->log, "CONNECT: %s" _ peer->addr_port_text.data);
+
rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in));
if (rc == -1) {
@@ -232,6 +234,12 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc)
void ngx_event_connect_peer_failed(ngx_peer_connection_t *pc)
{
+ pc->cur_peer++;
+
+ if (pc->cur_peer >= pc->peers->number) {
+ pc->cur_peer = 0;
+ }
+
pc->tries--;
return;