No-nest mode for script content in HTML parser MP-486
[metaproxy-moved-to-github.git] / src / filter_http_rewrite.cpp
index 8557a01..0f7ea87 100644 (file)
@@ -229,38 +229,12 @@ void yf::HttpRewrite::Phase::rewrite_headers(mp::odr & o,
             if (!it->header.empty() &&
                 regex_match(header->name, it->header))
             {
-#ifdef OLDHEADERMATCH                
-                // Matches and replaces the whole header line.
-                // This is good if you want to play with the header name too,
-                // but useless for patterns that want to anchor to the beginning
-                // or end of the header value, as we want to do with host-relative
-                // links. This code should probably be removed.
-                std::string sheader(header->name);
-                sheader += ": ";
-                sheader += header->value;
-
-                if (it->exec(vars, sheader, true))
-                {
-                    size_t pos = sheader.find(": ");
-                    if (pos == std::string::npos)
-                    {
-                        yaz_log(YLOG_LOG, "Header malformed during rewrite, ignoring");
-                        continue;
-                    }
-                    header->name = odr_strdup(
-                        o, sheader.substr(0, pos).c_str());
-                    header->value = odr_strdup(
-                        o, sheader.substr(pos + 2, std::string::npos).c_str());
-                }
-#else
                 // Match and replace only the header value
                 std::string hval(header->value);
                 if (it->exec(vars, hval, true))
                 {
                     header->value = odr_strdup(o, hval.c_str());
                 }
-                    
-#endif
             }
         }
     }
@@ -275,6 +249,10 @@ void yf::HttpRewrite::Phase::rewrite_body(
 {
     if (*content_len == 0)
         return;
+    if (!content_type) {
+        yaz_log(YLOG_LOG, "rewrite_body: null content_type, can not rewrite");
+        return;
+    }
     std::list<Content>::const_iterator cit = content_list.begin();
     for (; cit != content_list.end(); cit++)
     {
@@ -284,13 +262,18 @@ void yf::HttpRewrite::Phase::rewrite_body(
             && regex_match(content_type, cit->content_re))
             break;
     }
-    if (cit == content_list.end())
+    if (cit == content_list.end()) {
+        yaz_log(YLOG_LOG,"rewrite_body: No content rule matched %s, not rewriting",
+                content_type );  
         return;
+    }
 
     int i;
     for (i = 0; i < *content_len; i++)
-        if ((*content_buf)[i] == 0)
+        if ((*content_buf)[i] == 0) {
+            yaz_log(YLOG_LOG,"rewrite_body: Looks like binary stuff, not rewriting");
             return;  // binary content. skip
+        }
 
     std::string content(*content_buf, *content_len);
     cit->parse(m_verbose, content, vars);