X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_http_client.cpp;h=6cb963352dc173b72eb9274a0a27de25de74fea8;hb=1792cb2b795187eb86cbd9780e0d7b71ea3a270c;hp=74a1aa8bbed3b527e5d53da4da20afc425e513ab;hpb=19317eb63692c8039849a70e71e7619d71679502;p=metaproxy-moved-to-github.git diff --git a/src/filter_http_client.cpp b/src/filter_http_client.cpp index 74a1aa8..6cb9633 100644 --- a/src/filter_http_client.cpp +++ b/src/filter_http_client.cpp @@ -71,11 +71,16 @@ void yf::HTTPClient::Rep::proxy(mp::Package &package) Z_GDU *res_gdu = 0; mp::odr o; yaz_url_t yaz_url = yaz_url_create(); - std::string uri; + const char *http_proxy = + z_HTTP_header_remove(&hreq->headers, "X-Metaproxy-Proxy"); + + if (!http_proxy) + http_proxy = proxy_host.c_str(); - if (proxy_host.length()) - yaz_url_set_proxy(yaz_url, proxy_host.c_str()); + if (*http_proxy) + yaz_url_set_proxy(yaz_url, http_proxy); + std::string uri; if (hreq->path[0] == '/') { if (default_host.length()) @@ -92,14 +97,7 @@ void yf::HTTPClient::Rep::proxy(mp::Package &package) if (http_response) { res_gdu = o.create_HTTP_Response(package.session(), hreq, 200); - Z_HTTP_Header **hp = &http_response->headers; - while (*hp) - { - if (!yaz_matchstr((*hp)->name, "Transfer-Encoding")) - *hp = (*hp)->next; - else - hp = &(*hp)->next; - } + z_HTTP_header_remove(&http_response->headers, "Transfer-Encoding"); res_gdu->u.HTTP_Response = http_response; } else