Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-04-29 14:06:43 +0400
committerIgor Sysoev <igor@sysoev.ru>2008-04-29 14:06:43 +0400
commit615fe7f4be641d370704eb4694ba101ec93895ad (patch)
tree1497921ed6d101a5bc49802432569aa001887c1a /src
parent49db9d4602daa479e313cedc5ef5778221952301 (diff)
args support in static error_page
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_core_module.c17
-rw-r--r--src/http/ngx_http_core_module.h1
-rw-r--r--src/http/ngx_http_special_response.c4
3 files changed, 19 insertions, 3 deletions
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 5eed3b1e1..f57db3622 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -3471,6 +3471,7 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_core_loc_conf_t *lcf = conf;
+ u_char *args;
ngx_int_t overwrite;
ngx_str_t *value, uri;
ngx_uint_t i, n, nvar;
@@ -3539,6 +3540,8 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
}
+ args = (u_char *) ngx_strchr(uri.data, '?');
+
for (i = 1; i < cf->args->nelts - n; i++) {
err = ngx_array_push(lcf->error_pages);
if (err == NULL) {
@@ -3577,7 +3580,19 @@ ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
}
- err->uri = uri;
+ if (args) {
+ err->uri.len = args - uri.data;
+ err->uri.data = uri.data;
+ args++;
+ err->args.len = (uri.data + uri.len) - args;
+ err->args.data = args;
+
+ } else {
+ err->uri = uri;
+ err->args.len = 0;
+ err->args.data = NULL;
+ }
+
err->uri_lengths = uri_lengths;
err->uri_values = uri_values;
}
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index e11d82941..9a9f97bdd 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -225,6 +225,7 @@ typedef struct {
ngx_int_t status;
ngx_int_t overwrite;
ngx_str_t uri;
+ ngx_str_t args;
ngx_array_t *uri_lengths;
ngx_array_t *uri_values;
} ngx_http_err_page_t;
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 741a9b1d4..306944b61 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -441,8 +441,6 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
r->zero_in_uri = 0;
- args = NULL;
-
if (err_page->uri_lengths) {
if (ngx_http_script_run(r, &u, err_page->uri_lengths->elts, 0,
err_page->uri_values->elts)
@@ -453,6 +451,7 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
p = u.data;
uri = &u;
+ args = NULL;
if (*p == '/') {
@@ -488,6 +487,7 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
} else {
uri = &err_page->uri;
+ args = &err_page->args;
}
if (uri->data[0] == '/') {