From de82e872465e23f4e7e9e1a4adb24a4e3410bff8 Mon Sep 17 00:00:00 2001 From: Jeffrey Crowell Date: Thu, 31 Dec 2015 10:38:38 -0500 Subject: [PATCH] reapply: location-header: tweak location header handling - Fix potentially sending the location header into PSOL twice. - Be more thorough when unsetting the location header Attempts to fix #725 from oschaaf --- src/ngx_pagespeed.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ngx_pagespeed.cc b/src/ngx_pagespeed.cc index 65c362a8f..a4490d433 100644 --- a/src/ngx_pagespeed.cc +++ b/src/ngx_pagespeed.cc @@ -303,6 +303,12 @@ ngx_int_t ps_base_fetch_handler(ngx_http_request_t* r) { STR_CASE_EQ_LITERAL(header->key, "Last-Modified") || STR_CASE_EQ_LITERAL(header->key, "Expires"))))) { header->hash = 0; + if (STR_CASE_EQ_LITERAL(header->key, "Location")) { + // There's a possible issue with the location header, where setting + // the hash to 0 is not enough. See: + // https://github.com/nginx/nginx/blob/master/src/http/ngx_http_header_filter_module.c#L314 + r->headers_out.location = NULL; + } } } } else { @@ -453,11 +459,6 @@ void copy_response_headers_from_ngx(const ngx_http_request_t* r, headers->set_status_code(r->headers_out.status); - if (r->headers_out.location != NULL) { - headers->Add(HttpAttributes::kLocation, - str_to_string_piece(r->headers_out.location->value)); - } - // Manually copy over the content type because it's not included in // request_->headers_out.headers. headers->Add(HttpAttributes::kContentType,