sort upstream weights

This commit is contained in:
Igor Sysoev 2007-08-09 15:28:17 +00:00
parent 6876bcdad6
commit 7a8e33993a

View File

@ -9,6 +9,7 @@
#include <ngx_http.h>
static int ngx_http_upstream_cmp_servers(const void *one, const void *two);
static ngx_uint_t
ngx_http_upstream_get_peer(ngx_http_upstream_rr_peers_t *peers);
@ -69,6 +70,10 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
us->peer.data = peers;
ngx_sort(&peers->peer[0], (size_t) n,
sizeof(ngx_http_upstream_rr_peer_t),
ngx_http_upstream_cmp_servers);
/* backup servers */
n = 0;
@ -118,6 +123,10 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
peers->next = backup;
ngx_sort(&backup->peer[0], (size_t) n,
sizeof(ngx_http_upstream_rr_peer_t),
ngx_http_upstream_cmp_servers);
return NGX_OK;
}
@ -179,6 +188,18 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
}
static int
ngx_http_upstream_cmp_servers(const void *one, const void *two)
{
ngx_http_upstream_rr_peer_t *first, *second;
first = (ngx_http_upstream_rr_peer_t *) one;
second = (ngx_http_upstream_rr_peer_t *) two;
return (first->weight < second->weight);
}
ngx_int_t
ngx_http_upstream_init_round_robin_peer(ngx_http_request_t *r,
ngx_http_upstream_srv_conf_t *us)