summaryrefslogtreecommitdiffhomepage
path: root/src/http/modules
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2013-02-11 14:56:14 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2013-02-11 14:56:14 +0000
commitff145c057451bfe40b5d59c5873091df07964831 (patch)
tree66768fa4838f5b540f2f890f4f5b0655b1fcc982 /src/http/modules
parent6b070a4d216eb2083a96b3a3f24996f43940c4cd (diff)
downloadnginx-ff145c057451bfe40b5d59c5873091df07964831.tar.gz
nginx-ff145c057451bfe40b5d59c5873091df07964831.tar.bz2
Merge of r4992: off-by-one with 32/64 upstream backup servers.
Fixed off-by-one during upstream state resetting when switching to backup servers if there were exactly 32 (64 on 64-bit platforms) backup servers configured. Based on patch by Thomas Chen (ticket #257).
Diffstat (limited to 'src/http/modules')
-rw-r--r--src/http/modules/ngx_http_upstream_least_conn_module.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/http/modules/ngx_http_upstream_least_conn_module.c b/src/http/modules/ngx_http_upstream_least_conn_module.c
index 21156ae1a..bd2f1bc9e 100644
--- a/src/http/modules/ngx_http_upstream_least_conn_module.c
+++ b/src/http/modules/ngx_http_upstream_least_conn_module.c
@@ -313,7 +313,9 @@ failed:
lcp->rrp.peers = peers->next;
pc->tries = lcp->rrp.peers->number;
- n = lcp->rrp.peers->number / (8 * sizeof(uintptr_t)) + 1;
+ n = (lcp->rrp.peers->number + (8 * sizeof(uintptr_t) - 1))
+ / (8 * sizeof(uintptr_t));
+
for (i = 0; i < n; i++) {
lcp->rrp.tried[i] = 0;
}