From c13b0b1fb9a4d9f984345e26c2d15e24203e8691 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 16 Jul 2015 13:46:30 +0200 Subject: Speed up things a bit, make WPAD guessing better --- .../search/desktop/DesktopProxySearchStrategy.java | 23 ++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java') diff --git a/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java index 8a5a5d8..ca785f4 100644 --- a/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java +++ b/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java @@ -8,11 +8,11 @@ import com.btr.proxy.search.desktop.kde.KdeProxySearchStrategy; import com.btr.proxy.search.desktop.osx.OsxProxySearchStrategy; import com.btr.proxy.search.desktop.win.WinProxySearchStrategy; import com.btr.proxy.util.Logger; -import com.btr.proxy.util.PlatformUtil; -import com.btr.proxy.util.ProxyException; import com.btr.proxy.util.Logger.LogLevel; +import com.btr.proxy.util.PlatformUtil; import com.btr.proxy.util.PlatformUtil.Desktop; import com.btr.proxy.util.PlatformUtil.Platform; +import com.btr.proxy.util.ProxyException; /***************************************************************************** * This search provider will try to find out on which desktop platform we @@ -22,6 +22,12 @@ import com.btr.proxy.util.PlatformUtil.Platform; ****************************************************************************/ public class DesktopProxySearchStrategy implements ProxySearchStrategy { + + private static final Object lock = new Object(); + + private static ProxySelector selector = null; + + private static long last = 0; /************************************************************************* * Gets the default ProxySelector for the current platform. @@ -30,8 +36,17 @@ public class DesktopProxySearchStrategy implements ProxySearchStrategy { ************************************************************************/ public ProxySelector getProxySelector() throws ProxyException { - ProxySearchStrategy strategy = findDesktopSpecificStrategy(); - return strategy == null? null : strategy.getProxySelector(); + long now = System.currentTimeMillis(); + synchronized (lock) { + if (last + 5000 < now) + return selector; + last = now; + ProxySearchStrategy strategy = findDesktopSpecificStrategy(); + if (strategy == null) + return null; + selector = strategy.getProxySelector(); + return selector; + } } /************************************************************************* -- cgit v1.2.3-55-g7522