Mercurial > hg > nginx-vendor-current
diff src/http/ngx_http_core_module.c @ 372:6639b93e81b2 NGINX_0_6_30
nginx 0.6.30
*) Change: now if an "include" directive pattern does not match any
file, then nginx does not issue an error.
*) Feature: now the time in directives may be specified without spaces,
for example, "1h50m".
*) Bugfix: memory leaks if the "ssl_verify_client" directive was on.
Thanks to Chavelle Vincent.
*) Bugfix: the "sub_filter" directive might set text to change into
output.
*) Bugfix: the "error_page" directive did not take into account
arguments in redirected URI.
*) Bugfix: now nginx always opens files in binary mode under Cygwin.
*) Bugfix: nginx could not be built on OpenBSD; bug appeared in 0.6.15.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 29 Apr 2008 00:00:00 +0400 |
parents | babd3d9efb62 |
children | edf1cb6c328e |
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -45,7 +45,8 @@ static char *ngx_http_core_server(ngx_co void *dummy); static char *ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy); -static int ngx_http_core_cmp_locations(const void *first, const void *second); +static ngx_int_t ngx_http_core_cmp_locations(const void *first, + const void *second); static char *ngx_http_core_types(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); @@ -2297,7 +2298,7 @@ ngx_http_core_location(ngx_conf_t *cf, n } -static int +static ngx_int_t ngx_http_core_cmp_locations(const void *one, const void *two) { ngx_int_t rc; @@ -2361,7 +2362,7 @@ ngx_http_core_cmp_locations(const void * return 1; } - return (int) rc; + return rc; } @@ -3470,6 +3471,7 @@ ngx_http_core_error_page(ngx_conf_t *cf, { 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; @@ -3538,6 +3540,8 @@ ngx_http_core_error_page(ngx_conf_t *cf, } } + 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) { @@ -3576,7 +3580,19 @@ ngx_http_core_error_page(ngx_conf_t *cf, } } - 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; }