diff --git a/src/lb_fwlc.c b/src/lb_fwlc.c index 882dd7d43..78a38a434 100644 --- a/src/lb_fwlc.c +++ b/src/lb_fwlc.c @@ -298,7 +298,7 @@ struct server *fwlc_get_next_server(struct proxy *p, struct server *srvtoavoid) srv = avoided = NULL; - HA_RWLOCK_WRLOCK(LBPRM_LOCK, &p->lbprm.lock); + HA_RWLOCK_RDLOCK(LBPRM_LOCK, &p->lbprm.lock); if (p->srv_act) node = eb32_first(&p->lbprm.fwlc.act); else if (p->lbprm.fbck) { @@ -334,7 +334,7 @@ struct server *fwlc_get_next_server(struct proxy *p, struct server *srvtoavoid) if (!srv) srv = avoided; out: - HA_RWLOCK_WRUNLOCK(LBPRM_LOCK, &p->lbprm.lock); + HA_RWLOCK_RDUNLOCK(LBPRM_LOCK, &p->lbprm.lock); return srv; }