mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-29 23:01:03 +01:00
BUG/MEDIUM: streams: Store prev_state before calling si_update_both().
As si_update_both() sets prev_state to state for each stream_interface, if we want to check it changed, copy it before calling si_update_both(). This should be backported to 1.9.
This commit is contained in:
parent
39cc020af1
commit
120f64a8c4
@ -2488,14 +2488,18 @@ redo:
|
|||||||
|
|
||||||
if (likely((si_f->state != SI_ST_CLO) ||
|
if (likely((si_f->state != SI_ST_CLO) ||
|
||||||
(si_b->state > SI_ST_INI && si_b->state < SI_ST_CLO))) {
|
(si_b->state > SI_ST_INI && si_b->state < SI_ST_CLO))) {
|
||||||
|
enum si_state si_b_prev_state, si_f_prev_state;
|
||||||
|
|
||||||
|
si_f_prev_state = si_f->prev_state;
|
||||||
|
si_b_prev_state = si_b->prev_state;
|
||||||
|
|
||||||
if ((sess->fe->options & PR_O_CONTSTATS) && (s->flags & SF_BE_ASSIGNED))
|
if ((sess->fe->options & PR_O_CONTSTATS) && (s->flags & SF_BE_ASSIGNED))
|
||||||
stream_process_counters(s);
|
stream_process_counters(s);
|
||||||
|
|
||||||
si_update_both(si_f, si_b);
|
si_update_both(si_f, si_b);
|
||||||
|
|
||||||
if (si_f->state == SI_ST_DIS || si_f->state != si_f->prev_state ||
|
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_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_b->flags) & SI_FL_ERR) ||
|
||||||
(((req->flags ^ rqf_last) | (res->flags ^ rpf_last)) & CF_MASK_ANALYSER))
|
(((req->flags ^ rqf_last) | (res->flags ^ rpf_last)) & CF_MASK_ANALYSER))
|
||||||
goto redo;
|
goto redo;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user