]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: stream: properly clear the previous error mask on L7 retries
authorWilly Tarreau <w@1wt.eu>
Fri, 7 May 2021 06:19:30 +0000 (08:19 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 7 May 2021 06:22:16 +0000 (08:22 +0200)
The cleanup of the previous error was incorrect on L7 retries, it would
OR two values while they're part of an enum, leaving some bits set.
Depending on the errors it was possible to occasionally see an internal
error ("I" flag) being logged.

This should be backported as far as 2.0, though the do_l7_retry() function
in in proto_htx.c in older versions.

src/http_ana.c

index 7c5e3ff66de3468dc32eb93aeee3e5633038497c..bed8d09b491f62cc8a3ef9abeb13d0d0a591b1dd 100644 (file)
@@ -1316,7 +1316,7 @@ static __inline int do_l7_retry(struct stream *s, struct stream_interface *si)
        res->to_forward = 0;
        res->analyse_exp = TICK_ETERNITY;
        res->total = 0;
-       s->flags &= ~(SF_ERR_SRVTO | SF_ERR_SRVCL);
+       s->flags &= ~SF_ERR_MASK;
        si_release_endpoint(&s->si[1]);
 
        b_reset(&req->buf);