X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_http_rewrite.cpp;h=def74b1157794fb28a0b8c91ee143fdfe6057c19;hb=a8b25eb1e4dee0290182ca69fe49a01557c58811;hp=9ef4de2c6b6ae2ab84ce0d55d20ba3710da0350b;hpb=a52a1c2251427a79ec9d0635b0bf9888eb1601e9;p=metaproxy-moved-to-github.git diff --git a/src/filter_http_rewrite.cpp b/src/filter_http_rewrite.cpp index 9ef4de2..def74b1 100644 --- a/src/filter_http_rewrite.cpp +++ b/src/filter_http_rewrite.cpp @@ -724,17 +724,36 @@ void yf::HttpRewrite::Content::configure( ("Empty rule in '" + values[3] + "' in http_rewrite filter"); } - size_t i; - for (i = 0; i < rulenames.size(); i++) + else if (rulenames.size() == 1) { std::map::const_iterator it = - rules.find(rulenames[i]); + rules.find(rulenames[0]); if (it == rules.end()) throw mp::filter::FilterException - ("Reference to non-existing rule '" + rulenames[i] + + ("Reference to non-existing rule '" + rulenames[0] + "' in http_rewrite filter"); - if (i == 0) - w.rule = it->second; + w.rule = it->second; + + } + else + { + RulePtr rule(new Rule); + size_t i; + for (i = 0; i < rulenames.size(); i++) + { + std::map::const_iterator it = + rules.find(rulenames[i]); + if (it == rules.end()) + throw mp::filter::FilterException + ("Reference to non-existing rule '" + rulenames[i] + + "' in http_rewrite filter"); + RulePtr subRule = it->second; + std::list::iterator rit = + subRule->replace_list.begin(); + for (; rit != subRule->replace_list.end(); rit++) + rule->replace_list.push_back(*rit); + } + w.rule = rule; } w.reqline = values[4] == "1"; w.type = values[5];