Mercurial > hg > nginx-quic
diff src/http/modules/ngx_http_upstream_least_conn_module.c @ 6100:c44459611d91
Upstream: store peers as a linked list.
This is an API change.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Fri, 10 Apr 2015 14:48:36 +0300 |
parents | 6ff0ebd6fbf4 |
children | 3264b7828f72 |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_upstream_least_conn_module.c +++ b/src/http/modules/ngx_http_upstream_least_conn_module.c @@ -130,7 +130,10 @@ ngx_http_upstream_get_least_conn_peer(ng p = 0; #endif - for (i = 0; i < peers->number; i++) { + for (peer = peers->peer, i = 0; + peer; + peer = peer->next, i++) + { n = i / (8 * sizeof(uintptr_t)); m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); @@ -139,8 +142,6 @@ ngx_http_upstream_get_least_conn_peer(ng continue; } - peer = &peers->peer[i]; - if (peer->down) { continue; } @@ -181,8 +182,10 @@ ngx_http_upstream_get_least_conn_peer(ng ngx_log_debug0(NGX_LOG_DEBUG_HTTP, pc->log, 0, "get least conn peer, many"); - for (i = p; i < peers->number; i++) { - + for (peer = best, i = p; + peer; + peer = peer->next, i++) + { n = i / (8 * sizeof(uintptr_t)); m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); @@ -190,8 +193,6 @@ ngx_http_upstream_get_least_conn_peer(ng continue; } - peer = &peers->peer[i]; - if (peer->down) { continue; } @@ -233,7 +234,7 @@ ngx_http_upstream_get_least_conn_peer(ng best->conns++; - rrp->current = p; + rrp->current = best; n = p / (8 * sizeof(uintptr_t)); m = (uintptr_t) 1 << p % (8 * sizeof(uintptr_t)); @@ -266,8 +267,8 @@ failed: /* all peers failed, mark them as live for quick recovery */ - for (i = 0; i < peers->number; i++) { - peers->peer[i].fails = 0; + for (peer = peers->peer; peer; peer = peer->next) { + peer->fails = 0; } pc->name = peers->name;