Upstream: hide_headers_hash handling at http level.

When headers to hide are set at the "http" level and not redefined in
a server block, we now preserve compiled headers hash into the "http"
section configuration to inherit this hash to all servers.
This commit is contained in:
Maxim Dounin 2016-10-14 19:48:26 +03:00
parent f5dcb06f28
commit c541cf70cf

View File

@ -6106,7 +6106,23 @@ ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
hash->pool = cf->pool;
hash->temp_pool = NULL;
return ngx_hash_init(hash, hide_headers.elts, hide_headers.nelts);
if (ngx_hash_init(hash, hide_headers.elts, hide_headers.nelts) != NGX_OK) {
return NGX_ERROR;
}
/*
* special handling to preserve conf->hide_headers_hash
* in the "http" section to inherit it to all servers
*/
if (prev->hide_headers_hash.buckets == NULL
&& conf->hide_headers == prev->hide_headers
&& conf->pass_headers == prev->pass_headers)
{
prev->hide_headers_hash = conf->hide_headers_hash;
}
return NGX_OK;
}