X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_http_rewrite.cpp;h=1badb44cee656f8a0744288b30307b207cb3a38e;hb=74728b63c51be8dc60ba686c37244b2c468e263b;hp=d2cee8a2b43edd4e88ead79454b55051b41568ac;hpb=1dca4a52e26e617c1f64a213ee7de780346a74f0;p=metaproxy-moved-to-github.git diff --git a/src/filter_http_rewrite.cpp b/src/filter_http_rewrite.cpp index d2cee8a..1badb44 100644 --- a/src/filter_http_rewrite.cpp +++ b/src/filter_http_rewrite.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -89,8 +89,8 @@ namespace metaproxy_1 { Phase(); int m_verbose; std::list content_list; - std::list skip_list; - void read_skip_headers(Z_HTTP_Request *hreq); + void read_skip_headers(Z_HTTP_Request *hreq, + std::list &skip_list); void rewrite_reqline(mp::odr & o, Z_HTTP_Request *hreq, std::map & vars) const; void rewrite_headers(mp::odr & o, Z_HTTP_Header *headers, @@ -141,21 +141,22 @@ void yf::HttpRewrite::process(mp::Package & package) const //map of request/response vars std::map vars; //we have an http req + + std::list skip_list; + if (gdu && gdu->which == Z_GDU_HTTP_Request) { Z_HTTP_Request *hreq = gdu->u.HTTP_Request; mp::odr o; req_phase->rewrite_reqline(o, hreq, vars); - res_phase->read_skip_headers(hreq); + res_phase->read_skip_headers(hreq, skip_list); yaz_log(YLOG_LOG, ">> Request headers"); req_phase->rewrite_headers(o, hreq->headers, vars); req_phase->rewrite_body(o, z_HTTP_header_lookup(hreq->headers, "Content-Type"), &hreq->content_buf, &hreq->content_len, - vars, res_phase->skip_list); - // TODO skip_list does not really belong in the phase. More like - // HttpRewrite itself! + vars, skip_list); package.request() = gdu; } package.move(); @@ -171,15 +172,15 @@ void yf::HttpRewrite::process(mp::Package & package) const z_HTTP_header_lookup(hres->headers, "Content-Type"), &hres->content_buf, &hres->content_len, - vars, res_phase->skip_list); + vars, skip_list); package.response() = gdu; } } // Read (and remove) the X-Metaproxy-SkipLink headers -void yf::HttpRewrite::Phase::read_skip_headers(Z_HTTP_Request *hreq) +void yf::HttpRewrite::Phase::read_skip_headers(Z_HTTP_Request *hreq, + std::list &skip_list ) { - skip_list.clear(); std::string url(hreq->path); if ( url.substr(0,7) != "http://" ) { // path was relative, as it usually is