X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_http_rewrite.cpp;h=1badb44cee656f8a0744288b30307b207cb3a38e;hb=586d78659d671683f33ec55f4a7d32b28e345ccd;hp=8fb2f5538bab435be7fe83f72cefb3e094f36d00;hpb=b02df3fd0849c5222081013420c18f949c55f9c5;p=metaproxy-moved-to-github.git diff --git a/src/filter_http_rewrite.cpp b/src/filter_http_rewrite.cpp index 8fb2f55..1badb44 100644 --- a/src/filter_http_rewrite.cpp +++ b/src/filter_http_rewrite.cpp @@ -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