summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-07-16 13:46:30 +0200
committerSimon Rettberg2015-07-16 13:46:30 +0200
commitc13b0b1fb9a4d9f984345e26c2d15e24203e8691 (patch)
tree5988f0b6f97802ceb5720f930dbb3c2e0567ad85 /src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
parentAdd HTTP connect timeout (diff)
downloadproxy-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/DesktopProxySearchStrategy.java')
-rw-r--r--src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java23
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;
+ }
}
/*************************************************************************