summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_http_rewrite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nxt_http_rewrite.c')
-rw-r--r--src/nxt_http_rewrite.c37
1 files changed, 7 insertions, 30 deletions
diff --git a/src/nxt_http_rewrite.c b/src/nxt_http_rewrite.c
index fb216eeb..5de15ed7 100644
--- a/src/nxt_http_rewrite.c
+++ b/src/nxt_http_rewrite.c
@@ -28,9 +28,8 @@ nxt_http_rewrite_init(nxt_router_conf_t *rtcf, nxt_http_action_t *action,
nxt_int_t
nxt_http_rewrite(nxt_task_t *task, nxt_http_request_t *r)
{
- u_char *p;
nxt_int_t ret;
- nxt_str_t str, encoded_path, target;
+ nxt_str_t str;
nxt_router_conf_t *rtcf;
nxt_http_action_t *action;
nxt_http_request_parse_t rp;
@@ -53,9 +52,8 @@ nxt_http_rewrite(nxt_task_t *task, nxt_http_request_t *r)
return NXT_ERROR;
}
- nxt_tstr_query(task, r->tstr_query, action->rewrite, &str);
-
- if (nxt_slow_path(nxt_tstr_query_failed(r->tstr_query))) {
+ ret = nxt_tstr_query(task, r->tstr_query, action->rewrite, &str);
+ if (nxt_slow_path(ret != NXT_OK)) {
return NXT_ERROR;
}
}
@@ -72,30 +70,6 @@ nxt_http_rewrite(nxt_task_t *task, nxt_http_request_t *r)
return NXT_ERROR;
}
- p = (rp.args.length > 0) ? rp.args.start - 1 : rp.target_end;
-
- encoded_path.start = rp.target_start;
- encoded_path.length = p - encoded_path.start;
-
- if (r->args->length == 0) {
- r->target = encoded_path;
-
- } else {
- target.length = encoded_path.length + 1 + r->args->length;
-
- target.start = nxt_mp_alloc(r->mem_pool, target.length);
- if (target.start == NULL) {
- return NXT_ERROR;
- }
-
- p = nxt_cpymem(target.start, encoded_path.start, encoded_path.length);
- *p++ = '?';
- nxt_memcpy(p, r->args->start, r->args->length);
-
- r->target = target;
- r->args->start = p;
- }
-
r->path = nxt_mp_alloc(r->mem_pool, sizeof(nxt_str_t));
if (nxt_slow_path(r->path == NULL)) {
return NXT_ERROR;
@@ -103,8 +77,11 @@ nxt_http_rewrite(nxt_task_t *task, nxt_http_request_t *r)
*r->path = rp.path;
+ r->uri_changed = 1;
+ r->quoted_target = rp.quoted_target;
+
if (nxt_slow_path(r->log_route)) {
- nxt_log(task, NXT_LOG_NOTICE, "URI rewritten to \"%V\"", &r->target);
+ nxt_log(task, NXT_LOG_NOTICE, "URI rewritten to \"%V\"", r->path);
}
return NXT_OK;