aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_special_response.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/ngx_http_special_response.c')
-rw-r--r--src/http/ngx_http_special_response.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 71428b0c9..6658ed07c 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -307,7 +307,7 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
ngx_int_t rc;
ngx_buf_t *b;
ngx_str_t *uri, *location;
- ngx_uint_t i, err, msie_padding;
+ ngx_uint_t i, n, err, msie_padding;
ngx_chain_t *out, *cl;
ngx_http_err_page_t *err_page;
ngx_http_core_loc_conf_t *clcf;
@@ -375,8 +375,23 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error)
{
return NGX_ERROR;
}
+
+ if (r->zero_in_uri) {
+ for (n = 0; n < uri->len; n++) {
+ if (uri->data[n] == '\0') {
+ goto zero;
+ }
+ }
+
+ r->zero_in_uri = 0;
+ }
+
+ } else {
+ r->zero_in_uri = 0;
}
+ zero:
+
if (uri->data[0] == '/') {
return ngx_http_internal_redirect(r, uri, NULL);
}