Mercurial > hg > nginx
comparison src/http/ngx_http_upstream_round_robin.c @ 5055:ac3690ee6c28 stable-1.2
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).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 11 Feb 2013 14:56:14 +0000 |
parents | 3795aeb360fb |
children | ee9a043765ea |
comparison
equal
deleted
inserted
replaced
5054:be9ce2946a8e | 5055:ac3690ee6c28 |
---|---|
472 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, pc->log, 0, "backup servers"); | 472 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, pc->log, 0, "backup servers"); |
473 | 473 |
474 rrp->peers = peers->next; | 474 rrp->peers = peers->next; |
475 pc->tries = rrp->peers->number; | 475 pc->tries = rrp->peers->number; |
476 | 476 |
477 n = rrp->peers->number / (8 * sizeof(uintptr_t)) + 1; | 477 n = (rrp->peers->number + (8 * sizeof(uintptr_t) - 1)) |
478 / (8 * sizeof(uintptr_t)); | |
479 | |
478 for (i = 0; i < n; i++) { | 480 for (i = 0; i < n; i++) { |
479 rrp->tried[i] = 0; | 481 rrp->tried[i] = 0; |
480 } | 482 } |
481 | 483 |
482 rc = ngx_http_upstream_get_round_robin_peer(pc, rrp); | 484 rc = ngx_http_upstream_get_round_robin_peer(pc, rrp); |