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.
This commit is contained in:
Christopher Faulet 2020-01-28 09:13:41 +01:00
parent c20afb810f
commit c87e468816
2 changed files with 2 additions and 1 deletions

View File

@ -99,6 +99,7 @@ enum {
REDIRECT_FLAG_NONE = 0, REDIRECT_FLAG_NONE = 0,
REDIRECT_FLAG_DROP_QS = 1, /* drop query string */ REDIRECT_FLAG_DROP_QS = 1, /* drop query string */
REDIRECT_FLAG_APPEND_SLASH = 2, /* append a slash if missing at the end */ 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 ) */ /* Redirect types (location, prefix, extended ) */

View File

@ -206,7 +206,7 @@ struct redirect_rule *http_parse_redirect_rule(const char *file, int linenum, st
const char *destination = NULL; const char *destination = NULL;
const char *cookie = NULL; const char *cookie = NULL;
int cookie_set = 0; 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; struct acl_cond *cond = NULL;
cur_arg = 0; cur_arg = 0;