set absolute weight, this fixes bogus "no live upstream" case when last upstream is down while live one has negative weight
diff --git a/src/http/ngx_http_upstream_round_robin.c b/src/http/ngx_http_upstream_round_robin.c index 79747f6..c25c076 100644 --- a/src/http/ngx_http_upstream_round_robin.c +++ b/src/http/ngx_http_upstream_round_robin.c
@@ -605,7 +605,7 @@ } for (i = 0; i < peers->number; i++) { - peer[i].current_weight += peer[i].weight; + peer[i].current_weight = peer[i].weight; } } }