mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
BUG/MEDIUM: http-ana: Clear request analyzers when applying redirect rule
A bug was introduced by the commit 2d5650082 ("BUG/MEDIUM: http-ana: Reset channels analysers when returning an error"). The request analyzers must be cleared when a redirect rule is applied. It is not a problem if the redirect rule is inside an http-request ruleset because the analyzer takes care to clear it. However, when it comes from a redirect ruleset (via the "redirect ..." directive), because of the above commit, the request analyzers are no longer cleared. It means some HTTP request analyzers may be called while the request channel was already flushed. It is totally unexpected and may lead to crash. Thanks to Yves Lafon for reporting the problem. This patch must be backported everywhere the above commit was backported.
This commit is contained in:
parent
d28b2b2352
commit
d34758849e
@ -2542,6 +2542,7 @@ int http_apply_redirect_rule(struct redirect_rule *rule, struct stream *s, struc
|
|||||||
if (rule->flags & REDIRECT_FLAG_FROM_REQ) {
|
if (rule->flags & REDIRECT_FLAG_FROM_REQ) {
|
||||||
/* let's log the request time */
|
/* let's log the request time */
|
||||||
s->logs.tv_request = now;
|
s->logs.tv_request = now;
|
||||||
|
req->analysers &= AN_REQ_FLT_END;
|
||||||
|
|
||||||
if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
|
if (s->sess->fe == s->be) /* report it if the request was intercepted by the frontend */
|
||||||
_HA_ATOMIC_INC(&s->sess->fe->fe_counters.intercepted_req);
|
_HA_ATOMIC_INC(&s->sess->fe->fe_counters.intercepted_req);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user