]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: http: fix "http-request reject" when not final
authorWilly Tarreau <w@1wt.eu>
Tue, 28 May 2019 06:26:17 +0000 (08:26 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 28 May 2019 06:26:17 +0000 (08:26 +0200)
When "http-request reject" was introduced in 1.8 with commit 53275e8b0
("MINOR: http: implement the "http-request reject" rule"), it was already
broken. The code mentions "it always returns ACT_RET_STOP" and obviously
a gross copy-paste made it ACT_RET_CONT. If the rule is the last one it
properly blocks, but if not the last one it gets ignored, as can be seen
with this simple configuration :

    frontend f1
        bind :8011
        mode http
        http-request reject
        http-request redirect location /

This trivial fix must be backported to 1.9 and 1.8. It is tracked by
github issue #107.

src/http_act.c

index c1b94dd0924223fa3ac0c08070e40b2b1bffb681..daa789abb6dfa5823a662155547ad1c616d23068 100644 (file)
@@ -202,7 +202,7 @@ static enum act_return http_action_reject(struct act_rule *rule, struct proxy *p
        if (!(s->flags & SF_FINST_MASK))
                s->flags |= SF_FINST_R;
 
-       return ACT_RET_CONT;
+       return ACT_RET_STOP;
 }
 
 /* parse the "reject" action: