diff options
Diffstat (limited to '')
| -rw-r--r-- | src/event/ngx_event_connect.c | 12 |
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; |
