The loop always missed one iteration due to the incrementation done on
the for check. Move the incrementation on the loop last statement to fix
this behaviour.
This bug has a very limited impact, not at all visible to the user, but
could be backported to 2.2.
if (stop >= global.nbthread)
stop = 0;
- for (i = stop; !found && (i = ((i + 1 == global.nbthread) ? 0 : i + 1)) != stop;) {
+ i = stop;
+ do {
struct mt_list *elt1, elt2;
if (!srv->curr_idle_thr[i] || i == tid)
}
}
HA_SPIN_UNLOCK(OTHER_LOCK, &idle_conns[i].takeover_lock);
- }
+ } while (!found && (i = (i + 1 == global.nbthread) ? 0 : i + 1) != stop);
if (!found)
conn = NULL;