performance hack for httpd

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6776 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 15 years ago
parent 1e8e79b9ef
commit b3238bec83

@ -29,6 +29,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.yacy.kelondro.data.meta.DigestURI;
import net.yacy.kelondro.util.DateFormatter;
@ -62,6 +64,16 @@ public class RequestHeader extends HeaderFramework {
private static final long serialVersionUID = 0L;
private static final Pattern P_20 = Pattern.compile(" ", Pattern.LITERAL);
private static final Pattern P_7B = Pattern.compile("{", Pattern.LITERAL);
private static final Pattern P_7D = Pattern.compile("}", Pattern.LITERAL);
private static final Pattern P_7C = Pattern.compile("|", Pattern.LITERAL);
private static final Pattern P_5C = Pattern.compile("\\", Pattern.LITERAL);
private static final Pattern P_5E = Pattern.compile("^", Pattern.LITERAL);
private static final Pattern P_5B = Pattern.compile("[", Pattern.LITERAL);
private static final Pattern P_5D = Pattern.compile("]", Pattern.LITERAL);
private static final Pattern P_60 = Pattern.compile("`", Pattern.LITERAL);
public RequestHeader() {
super();
}
@ -159,11 +171,16 @@ public class RequestHeader extends HeaderFramework {
}
// replacing spaces in the url string correctly
args = args.replace(" ","%20");
args = P_20.matcher(args).replaceAll(Matcher.quoteReplacement("%20"));
// replace unwise characters (see RFC 2396, 2.4.3), which may not be escaped
args = args.replace("{", "%7B").replace("}", "%7D").replace("|", "%7C").replace("\\", "%5C")
.replace("^", "%5E").replace("[", "%5B").replace("]", "%5D").replace("`", "%60");
args = P_7B.matcher(args).replaceAll(Matcher.quoteReplacement("%7B"));
args = P_7D.matcher(args).replaceAll(Matcher.quoteReplacement("%7D"));
args = P_7C.matcher(args).replaceAll(Matcher.quoteReplacement("%7C"));
args = P_5C.matcher(args).replaceAll(Matcher.quoteReplacement("%5C"));
args = P_5E.matcher(args).replaceAll(Matcher.quoteReplacement("%5E"));
args = P_5B.matcher(args).replaceAll(Matcher.quoteReplacement("%5B"));
args = P_5D.matcher(args).replaceAll(Matcher.quoteReplacement("%5D"));
args = P_60.matcher(args).replaceAll(Matcher.quoteReplacement("%60"));
// properties of the query are stored with the prefix "&"
// additionally, the values URL and ARGC are computed

Loading…
Cancel
Save