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);