BUG/MINOR: lb-map: fix unprotected update to server's score

The loop trying to figure the best server is theorically capable of
finishing the loop with best == NULL, causing the HA_ATOMIC_SUB()
to fail there. However for this to happen the list should be empty,
which is avoided at the beginning of the function. As it is, the
function still remains at risk so better address this now.

This patch should be backported to 1.8.
This commit is contained in:
Willy Tarreau 2018-12-02 19:22:55 +01:00
parent 75a323f04e
commit c8b476d952

View File

@ -132,7 +132,8 @@ void recalc_server_map(struct proxy *px)
}
}
px->lbprm.map.srv[o] = best;
HA_ATOMIC_SUB(&best->wscore, tot);
if (best)
HA_ATOMIC_SUB(&best->wscore, tot);
}
}