mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 23:44:41 +00:00
BUG/MEDIUM: streams: Only re-run process_stream if we're in a connected state.
In process_stream(), only try again when there's the SI_FL_ERR flag and we're in a connected state, otherwise we can loop forever. It used to work because si_update_both() bogusly removed the SI_FL_ERR flag, and it would never be set at this point. Now it does, so take that into account. Many, many thanks to Maciej Zdeb for reporting the problem, and helping investigating it. This should be backported to 1.9.
This commit is contained in:
parent
2b4edfb0bd
commit
56897e20a3
@ -2502,7 +2502,8 @@ redo:
|
||||
|
||||
if (si_f->state == SI_ST_DIS || si_f->state != si_f_prev_state ||
|
||||
si_b->state == SI_ST_DIS || si_b->state != si_b_prev_state ||
|
||||
((si_f->flags | si_b->flags) & SI_FL_ERR) ||
|
||||
((si_f->flags & SI_FL_ERR) && si_f->state != SI_ST_CLO) ||
|
||||
((si_b->flags & SI_FL_ERR) && si_b->state != SI_ST_CLO) ||
|
||||
(((req->flags ^ rqf_last) | (res->flags ^ rpf_last)) & CF_MASK_ANALYSER))
|
||||
goto redo;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user