diff options
author | Simon Rettberg | 2015-07-16 13:46:30 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-07-16 13:46:30 +0200 |
commit | c13b0b1fb9a4d9f984345e26c2d15e24203e8691 (patch) | |
tree | 5988f0b6f97802ceb5720f930dbb3c2e0567ad85 /src/main/java/com/btr/proxy/search/desktop | |
parent | Add HTTP connect timeout (diff) | |
download | proxy-vole-c13b0b1fb9a4d9f984345e26c2d15e24203e8691.tar.gz proxy-vole-c13b0b1fb9a4d9f984345e26c2d15e24203e8691.tar.xz proxy-vole-c13b0b1fb9a4d9f984345e26c2d15e24203e8691.zip |
Speed up things a bit, make WPAD guessing better
Diffstat (limited to 'src/main/java/com/btr/proxy/search/desktop')
-rw-r--r-- | src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java | 23 |
1 files changed, 19 insertions, 4 deletions
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; + } } /************************************************************************* |