Welcome! Log In Create A New Profile

Advanced

[nginx] Fixed missing "Location" field with some relative redirects.

December 22, 2016 09:32AM
details: http://hg.nginx.org/nginx/rev/c85dfd99a2dd
branches:
changeset: 6853:c85dfd99a2dd
user: Ruslan Ermilov <ru@nginx.com>
date: Thu Dec 22 11:58:52 2016 +0300
description:
Fixed missing "Location" field with some relative redirects.

Relative redirects did not work with directory redirects and
auto redirects issued by nginx.

diffstat:

src/http/modules/ngx_http_dav_module.c | 9 +++------
src/http/modules/ngx_http_static_module.c | 9 +++------
src/http/ngx_http_core_module.c | 6 ++----
src/http/ngx_http_upstream.c | 4 ++--
4 files changed, 10 insertions(+), 18 deletions(-)

diffs (82 lines):

diff -r d15172ebb400 -r c85dfd99a2dd src/http/modules/ngx_http_dav_module.c
--- a/src/http/modules/ngx_http_dav_module.c Wed Dec 21 23:10:51 2016 +0300
+++ b/src/http/modules/ngx_http_dav_module.c Thu Dec 22 11:58:52 2016 +0300
@@ -1067,7 +1067,7 @@ ngx_http_dav_location(ngx_http_request_t
u_char *location;
ngx_http_core_loc_conf_t *clcf;

- r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t));
+ r->headers_out.location = ngx_list_push(&r->headers_out.headers);
if (r->headers_out.location == NULL) {
return NGX_ERROR;
}
@@ -1086,11 +1086,8 @@ ngx_http_dav_location(ngx_http_request_t
ngx_memcpy(location, r->uri.data, r->uri.len);
}

- /*
- * we do not need to set the r->headers_out.location->hash and
- * r->headers_out.location->key fields
- */
-
+ r->headers_out.location->hash = 1;
+ ngx_str_set(&r->headers_out.location->key, "Location");
r->headers_out.location->value.len = r->uri.len;
r->headers_out.location->value.data = location;

diff -r d15172ebb400 -r c85dfd99a2dd src/http/modules/ngx_http_static_module.c
--- a/src/http/modules/ngx_http_static_module.c Wed Dec 21 23:10:51 2016 +0300
+++ b/src/http/modules/ngx_http_static_module.c Thu Dec 22 11:58:52 2016 +0300
@@ -150,7 +150,7 @@ ngx_http_static_handler(ngx_http_request

ngx_http_clear_location(r);

- r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t));
+ r->headers_out.location = ngx_list_push(&r->headers_out.headers);
if (r->headers_out.location == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -182,11 +182,8 @@ ngx_http_static_handler(ngx_http_request
}
}

- /*
- * we do not need to set the r->headers_out.location->hash and
- * r->headers_out.location->key fields
- */
-
+ r->headers_out.location->hash = 1;
+ ngx_str_set(&r->headers_out.location->key, "Location");
r->headers_out.location->value.len = len;
r->headers_out.location->value.data = location;

diff -r d15172ebb400 -r c85dfd99a2dd src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c Wed Dec 21 23:10:51 2016 +0300
+++ b/src/http/ngx_http_core_module.c Thu Dec 22 11:58:52 2016 +0300
@@ -983,10 +983,8 @@ ngx_http_core_find_config_phase(ngx_http
return NGX_OK;
}

- /*
- * we do not need to set the r->headers_out.location->hash and
- * r->headers_out.location->key fields
- */
+ r->headers_out.location->hash = 1;
+ ngx_str_set(&r->headers_out.location->key, "Location");

if (r->args.len == 0) {
r->headers_out.location->value = clcf->name;
diff -r d15172ebb400 -r c85dfd99a2dd src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c Wed Dec 21 23:10:51 2016 +0300
+++ b/src/http/ngx_http_upstream.c Thu Dec 22 11:58:52 2016 +0300
@@ -4927,8 +4927,8 @@ ngx_http_upstream_rewrite_location(ngx_h
}

/*
- * we do not set r->headers_out.location here to avoid the handling
- * the local redirects without a host name by ngx_http_header_filter()
+ * we do not set r->headers_out.location here to avoid handling
+ * relative redirects in ngx_http_header_filter()
*/

return NGX_OK;
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Fixed missing "Location" field with some relative redirects.

ru@nginx.com 351 December 22, 2016 09:32AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 78
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready