Mercurial > hg > nginx-quic
changeset 6114:4a640716f4e2
Upstream: fixed unlocked access to peer->conns.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Sun, 19 Apr 2015 22:41:09 +0300 |
parents | 36d99c042652 |
children | 61d7ae76647d |
files | src/http/ngx_http_upstream_round_robin.c |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream_round_robin.c +++ b/src/http/ngx_http_upstream_round_robin.c @@ -599,17 +599,20 @@ ngx_http_upstream_free_round_robin_peer( peer = rrp->current; + ngx_http_upstream_rr_peers_rlock(rrp->peers); + ngx_http_upstream_rr_peer_lock(rrp->peers, peer); + if (rrp->peers->single) { peer->conns--; + ngx_http_upstream_rr_peer_unlock(rrp->peers, peer); + ngx_http_upstream_rr_peers_unlock(rrp->peers); + pc->tries = 0; return; } - ngx_http_upstream_rr_peers_rlock(rrp->peers); - ngx_http_upstream_rr_peer_lock(rrp->peers, peer); - if (state & NGX_PEER_FAILED) { now = ngx_time();