diff --git a/src/mod_proxy.c b/src/mod_proxy.c index fd5a5f61..7865b021 100644 --- a/src/mod_proxy.c +++ b/src/mod_proxy.c @@ -1034,9 +1034,10 @@ static handler_t proxy_create_env_connect(gw_handler_ctx *gwhctx) { static handler_t proxy_response_headers(request_st * const r, struct http_response_opts_t *opts) { /* response headers just completed */ handler_ctx *hctx = (handler_ctx *)opts->pdata; + http_header_remap_opts * const remap_hdrs = &hctx->conf.header; if (light_btst(r->resp_htags, HTTP_HEADER_UPGRADE)) { - if (hctx->conf.header.upgrade && r->http_status == 101) { + if (remap_hdrs->upgrade && r->http_status == 101) { /* 101 Switching Protocols; transition to transparent proxy */ gw_set_transparent(&hctx->gw); http_response_upgrade_read_body_unknown(r); @@ -1055,21 +1056,24 @@ static handler_t proxy_response_headers(request_st * const r, struct http_respon /* rewrite paths, if needed */ - if (NULL == hctx->conf.header.urlpaths - && NULL == hctx->conf.header.hosts_response) + if (NULL == remap_hdrs->urlpaths && NULL == remap_hdrs->hosts_response) return HANDLER_GO_ON; + buffer *vb; if (light_btst(r->resp_htags, HTTP_HEADER_LOCATION)) { - buffer *vb = http_header_response_get(r, HTTP_HEADER_LOCATION, CONST_STR_LEN("Location")); - if (vb) http_header_remap_uri(vb, 0, &hctx->conf.header, 0); + vb = http_header_response_get(r, HTTP_HEADER_LOCATION, + CONST_STR_LEN("Location")); + if (vb) http_header_remap_uri(vb, 0, remap_hdrs, 0); } if (light_btst(r->resp_htags, HTTP_HEADER_CONTENT_LOCATION)) { - buffer *vb = http_header_response_get(r, HTTP_HEADER_CONTENT_LOCATION, CONST_STR_LEN("Content-Location")); - if (vb) http_header_remap_uri(vb, 0, &hctx->conf.header, 0); + vb = http_header_response_get(r, HTTP_HEADER_CONTENT_LOCATION, + CONST_STR_LEN("Content-Location")); + if (vb) http_header_remap_uri(vb, 0, remap_hdrs, 0); } if (light_btst(r->resp_htags, HTTP_HEADER_SET_COOKIE)) { - buffer *vb = http_header_response_get(r, HTTP_HEADER_SET_COOKIE, CONST_STR_LEN("Set-Cookie")); - if (vb) http_header_remap_setcookie(vb, 0, &hctx->conf.header); + vb = http_header_response_get(r, HTTP_HEADER_SET_COOKIE, + CONST_STR_LEN("Set-Cookie")); + if (vb) http_header_remap_setcookie(vb, 0, remap_hdrs); } return HANDLER_GO_ON;