From c87e46881687b8ddb9b3f459e60edb1e8d7c5d7c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 28 Jan 2020 09:13:41 +0100 Subject: [PATCH] MINOR: http-rules: Add a flag on redirect rules to know the rule direction HTTP redirect rules can be evaluated on the request or the response path. So when a redirect rule is evaluated, it is important to have this information because some specific processing may be performed depending on the direction. So the REDIRECT_FLAG_FROM_REQ flag has been added. It is set when applicable on the redirect rule during the parsing. This patch is mandatory to fix a bug on redirect rule. It must be backported to all stable versions. --- include/types/http_ana.h | 1 + src/http_rules.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/types/http_ana.h b/include/types/http_ana.h index 5a7ced7b02..bc66098585 100644 --- a/include/types/http_ana.h +++ b/include/types/http_ana.h @@ -99,6 +99,7 @@ enum { REDIRECT_FLAG_NONE = 0, REDIRECT_FLAG_DROP_QS = 1, /* drop query string */ REDIRECT_FLAG_APPEND_SLASH = 2, /* append a slash if missing at the end */ + REDIRECT_FLAG_FROM_REQ = 3, /* redirect rule on the request path */ }; /* Redirect types (location, prefix, extended ) */ diff --git a/src/http_rules.c b/src/http_rules.c index 2e70e6bf0f..f1a187b162 100644 --- a/src/http_rules.c +++ b/src/http_rules.c @@ -206,7 +206,7 @@ struct redirect_rule *http_parse_redirect_rule(const char *file, int linenum, st const char *destination = NULL; const char *cookie = NULL; int cookie_set = 0; - unsigned int flags = REDIRECT_FLAG_NONE; + unsigned int flags = (!dir ? REDIRECT_FLAG_FROM_REQ : REDIRECT_FLAG_NONE); struct acl_cond *cond = NULL; cur_arg = 0; -- 2.39.5