From: Christopher Faulet Date: Wed, 2 Sep 2020 09:10:38 +0000 (+0200) Subject: Revert "BUG/MINOR: http-rules: Replace path and query-string in "replace-path" action" X-Git-Tag: v2.1.9~30 X-Git-Url: http://git.haproxy.org/?a=commitdiff_plain;h=28616d973e9185e0152474bb1083145c46b90259;p=haproxy-2.1.git Revert "BUG/MINOR: http-rules: Replace path and query-string in "replace-path" action" This reverts commit 4b9c0d1fc08388bf44c6ebbd88f786032dd010fc. Actually, the "replace-path" action is ambiguous. "set-path" action preserves the query-string. The "path" sample fetch does not contain the query-string. But "replace-path" action is documented to handle the query-string. It is probably not the expected behavior. So instead of fixing the code, we will fix the documentation to make "replace-path" action consistent with other parts of the code. In addition actions and sample fetches to handle the path with the query-string will be added. If the commit above is ever backported, this one must be as well. (cherry picked from commit 1fa0cc18e1c6dd5460492128b5b400d808f3c823) Signed-off-by: Christopher Faulet (cherry picked from commit 34b0840ec15e9c869f1bcbdfb4cfca119cb7a874) Signed-off-by: Christopher Faulet --- diff --git a/src/http_act.c b/src/http_act.c index 372147e..1105d59 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -152,8 +152,8 @@ static enum act_return http_action_replace_uri(struct act_rule *rule, struct pro goto leave; uri = htx_sl_req_uri(http_get_stline(htxbuf(&s->req.buf))); - if (rule->arg.act.p[0] == (void *)4) - uri = http_get_path(uri); + if (rule->arg.act.p[0] == (void *)1) + uri = iststop(http_get_path(uri), '?'); if (!regex_exec_match2(rule->arg.act.p[1], uri.ptr, uri.len, MAX_MATCH, pmatch, 0)) goto leave; @@ -191,7 +191,7 @@ static enum act_parse_ret parse_replace_uri(const char **args, int *orig_arg, st rule->action = ACT_CUSTOM; if (strcmp(args[cur_arg-1], "replace-path") == 0) - rule->arg.act.p[0] = (void *)4; // replace-path + rule->arg.act.p[0] = (void *)1; // replace-path else rule->arg.act.p[0] = (void *)3; // replace-uri diff --git a/src/http_ana.c b/src/http_ana.c index b63e7fe..63f9135 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -2795,11 +2795,6 @@ int http_req_replace_stline(int action, const char *replace, int len, return -1; break; - case 4: // path + query - if (!http_replace_req_path(htx, ist2(replace, len), 1)) - return -1; - break; - default: return -1; }