Mercurial > hg > nginx-vendor-current
diff src/http/modules/ngx_http_upstream_ip_hash_module.c @ 330:5e3b425174f6 NGINX_0_6_9
nginx 0.6.9
*) Bugfix: a worker process may got caught in an endless loop, if the
HTTPS protocol was used; bug appeared in 0.6.7.
*) Bugfix: if server listened on two addresses or ports and trailing
wildcard was used, then nginx did not run.
*) Bugfix: the "ip_hash" directive might incorrectly mark servers as
down.
*) Bugfix: nginx could not be built on amd64; bug appeared in 0.6.8.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 28 Aug 2007 00:00:00 +0400 |
parents | fc223117327f |
children | 76a79816b771 |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_upstream_ip_hash_module.c +++ b/src/http/modules/ngx_http_upstream_ip_hash_module.c @@ -140,7 +140,7 @@ ngx_http_upstream_get_ip_hash_peer(ngx_p /* TODO: cached */ - if (iphp->tries > 20 || iphp->rrp.peers->number == 1) { + if (iphp->tries > 20 || iphp->rrp.peers->single) { return iphp->get_rr_peer(pc, &iphp->rrp); } @@ -160,7 +160,7 @@ ngx_http_upstream_get_ip_hash_peer(ngx_p p = hash % iphp->rrp.peers->number; n = p / (8 * sizeof(uintptr_t)); - m = 1 << p % (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << p % (8 * sizeof(uintptr_t)); if (!(iphp->rrp.tried[n] & m)) { @@ -195,6 +195,8 @@ ngx_http_upstream_get_ip_hash_peer(ngx_p } } + iphp->rrp.current = p; + pc->sockaddr = peer->sockaddr; pc->socklen = peer->socklen; pc->name = &peer->name;