From b2263efaf09bacb93cee7741d8cb03db9f7b7944 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 2 Sep 2011 17:24:14 +0000
Subject: [PATCH] cache user-agent processing

---
 .../src/net/i2p/router/web/CSSHelper.java     | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
index 7f6f9455fe..269f0c7768 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
@@ -1,10 +1,16 @@
 package net.i2p.router.web;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  * Copied and modded from I2PTunnel IndexBean (GPL)
  * @author zzz
  */
 public class CSSHelper extends HelperBase {
+
+    private static final Map<String, Boolean> _UACache = new ConcurrentHashMap();
+
     public CSSHelper() {}
     
     public static final String PROP_THEME_NAME = "routerconsole.theme";
@@ -69,7 +75,18 @@ public class CSSHelper extends HelperBase {
      *  @since 0.8.5
      */
     public boolean allowIFrame(String ua) {
-        return ua == null ||
+        if (ua == null)
+            return true;
+        Boolean brv = _UACache.get(ua);
+        if (brv != null)
+            return brv.booleanValue();
+        boolean rv = shouldAllowIFrame(ua);
+        _UACache.put(ua, Boolean.valueOf(rv));
+        return rv;
+    }
+
+    private static boolean shouldAllowIFrame(String ua) {
+        return
                                // text
                              !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
                                ua.startsWith("ELinks") || ua.startsWith("Links") ||
-- 
GitLab