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).
This commit is contained in:
Maxim Dounin 2013-02-11 14:56:14 +00:00
parent 0a74b1021d
commit 328b544313
2 changed files with 6 additions and 2 deletions

View File

@ -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;
}

View File

@ -474,7 +474,9 @@ failed:
rrp->peers = peers->next;
pc->tries = rrp->peers->number;
n = rrp->peers->number / (8 * sizeof(uintptr_t)) + 1;
n = (rrp->peers->number + (8 * sizeof(uintptr_t) - 1))
/ (8 * sizeof(uintptr_t));
for (i = 0; i < n; i++) {
rrp->tried[i] = 0;
}