mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-12 08:27:24 +00:00
BUG/MINOR: stream: Reset stream final state and si error type on L7 retry
Thanks to a previous fix, the stream error mask is now cleared on L7 retry. But the stream final state (SF_FINST_*) and the stream-interface error type must also be reset to properly restart a new connection and be sure to not inherit errors from the previous connection attempt. In addition, SF_ADDR_SET flag is not systematically removed. stream_choose_redispatch() already takes care to unset it if necessary. When the connection is not redispatch, the server address can be preserved. This patch must be backported as far as 2.0.
This commit is contained in:
parent
b205bfdab7
commit
30aa0da532
@ -1309,14 +1309,14 @@ static __inline int do_l7_retry(struct stream *s, struct stream_interface *si)
|
||||
res->flags &= ~(CF_READ_ERROR | CF_READ_TIMEOUT | CF_SHUTR | CF_EOI | CF_READ_NULL | CF_SHUTR_NOW);
|
||||
res->analysers = 0;
|
||||
si->flags &= ~(SI_FL_ERR | SI_FL_EXP | SI_FL_RXBLK_SHUT);
|
||||
s->flags &= ~SF_ADDR_SET;
|
||||
si->err_type = SI_ET_NONE;
|
||||
s->flags &= ~(SF_ERR_MASK | SF_FINST_MASK);
|
||||
stream_choose_redispatch(s);
|
||||
si->exp = TICK_ETERNITY;
|
||||
res->rex = TICK_ETERNITY;
|
||||
res->to_forward = 0;
|
||||
res->analyse_exp = TICK_ETERNITY;
|
||||
res->total = 0;
|
||||
s->flags &= ~SF_ERR_MASK;
|
||||
si_release_endpoint(&s->si[1]);
|
||||
|
||||
b_reset(&req->buf);
|
||||
|
Loading…
Reference in New Issue
Block a user