diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java index c6d41ca00..4b3c6ecaf 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java @@ -118,9 +118,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { if (error && current_proxy != null) { - Logger.getLogger(getClass().getName()).log(Level.WARNING, "{0} Worker [{1}]: excluding proxy -> {2}", new Object[]{Thread.currentThread().getName(), _id, current_proxy}); - - MainPanel.getProxy_manager().excludeProxy(current_proxy); + MainPanel.getProxy_manager().removeProxy(current_proxy); } current_proxy = MainPanel.getProxy_manager().getFastestProxy(); @@ -152,9 +150,9 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { HttpGet httpget = new HttpGet(new URI(chunk.getUrl())); - error = false; + error = true; - error509 = false; + error509 = true; if (getDownload().isError509()) { getDownload().getView().set509Error(false); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index 3e39551ef..7883b9d28 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -48,7 +48,7 @@ import org.apache.http.auth.UsernamePasswordCredentials; */ public final class MainPanel { - public static final String VERSION = "4.0"; + public static final String VERSION = "4.1"; public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; public static final int STREAMER_PORT = 1337; diff --git a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java index cb56eec78..326c1f723 100644 --- a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java +++ b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java @@ -312,7 +312,7 @@ public final class MegaAPI { Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "{0}: excluding proxy -> {1}", new Object[]{Thread.currentThread().getName(), current_proxy}); - MainPanel.getProxy_manager().excludeProxy(current_proxy); + MainPanel.getProxy_manager().removeProxy(current_proxy); } current_proxy = MainPanel.getProxy_manager().getFastestProxy(); diff --git a/src/main/java/com/tonikelope/megabasterd/MiscTools.java b/src/main/java/com/tonikelope/megabasterd/MiscTools.java index 3384d2413..a2f2ec1bf 100644 --- a/src/main/java/com/tonikelope/megabasterd/MiscTools.java +++ b/src/main/java/com/tonikelope/megabasterd/MiscTools.java @@ -820,7 +820,7 @@ public final class MiscTools { Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "{0}: excluding proxy -> {1}", new Object[]{Thread.currentThread().getName(), current_proxy}); - MainPanel.getProxy_manager().excludeProxy(current_proxy); + MainPanel.getProxy_manager().removeProxy(current_proxy); } current_proxy = MainPanel.getProxy_manager().getFastestProxy(); diff --git a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java index 27fe4ba95..755d5ceb2 100644 --- a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java +++ b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java @@ -11,8 +11,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import static com.tonikelope.megabasterd.MainPanel.THREAD_POOL; import static com.tonikelope.megabasterd.MiscTools.getApacheKissHttpClient; -import java.util.HashMap; -import java.util.concurrent.ConcurrentHashMap; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; @@ -23,12 +21,9 @@ import org.apache.http.impl.client.CloseableHttpClient; */ public class SmartMegaProxyManager implements Runnable { - public static final int PROXY_TIMEOUT = 30; - public static final int PROXY_MAX_EXCLUDE_COUNTER = 5; - public static final int PROXY_EXCLUDE_SECS = 10; + public static final int PROXY_TIMEOUT = 15; private volatile String _proxy_list_url; private final ConcurrentLinkedQueue _proxy_list; - private final ConcurrentHashMap _proxy_info; private final MainPanel _main_panel; private volatile boolean _exit; @@ -36,7 +31,6 @@ public class SmartMegaProxyManager implements Runnable { _main_panel = main_panel; _proxy_list_url = proxy_list_url; _proxy_list = new ConcurrentLinkedQueue<>(); - _proxy_info = new ConcurrentHashMap<>(); _exit = false; } @@ -63,57 +57,28 @@ public class SmartMegaProxyManager implements Runnable { public String getFastestProxy() { - for (String proxy : _proxy_list) { - - HashMap proxy_info = (HashMap) _proxy_info.get(proxy); - - Long extimestamp = (Long) proxy_info.get("extimestamp"); - - if (extimestamp == null || extimestamp + PROXY_EXCLUDE_SECS * 1000 < System.currentTimeMillis()) { - - return proxy; - - } else { - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Smart Proxy Manager: proxy is temporary excluded -> {1}", new Object[]{Thread.currentThread().getName(), proxy}); - } - } - - return null; + return _proxy_list.peek(); } - public void excludeProxy(String proxy) { + public void removeProxy(String proxy) { - if (_proxy_info.containsKey(proxy)) { + if (_proxy_list.contains(proxy)) { - HashMap proxy_info = (HashMap) _proxy_info.get(proxy); + _proxy_list.remove(proxy); - int excount = (int) proxy_info.get("excount") + 1; + _main_panel.getView().updateSmartProxyStatus("SmartProxy: " + _proxy_list.size()); - if (excount < PROXY_MAX_EXCLUDE_COUNTER) { + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Smart Proxy Manager: proxy removed -> {1}", new Object[]{Thread.currentThread().getName(), proxy}); - proxy_info.put("excount", excount); + if (_proxy_list.isEmpty()) { - proxy_info.put("extimestamp", System.currentTimeMillis()); + THREAD_POOL.execute(new Runnable() { + @Override + public void run() { - } else { - - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Smart Proxy Manager: proxy removed -> {1}", new Object[]{Thread.currentThread().getName(), proxy}); - - _proxy_list.remove(proxy); - _proxy_info.remove(proxy); - - _main_panel.getView().updateSmartProxyStatus("SmartProxy: " + _proxy_list.size()); - - if (_proxy_list.isEmpty()) { - - THREAD_POOL.execute(new Runnable() { - @Override - public void run() { - - _refreshProxyList(); - } - }); - } + _refreshProxyList(); + } + }); } } } @@ -152,23 +117,18 @@ public class SmartMegaProxyManager implements Runnable { if (proxy_list.length > 0) { _proxy_list.clear(); - _proxy_info.clear(); for (String proxy : proxy_list) { if (proxy.trim().matches(".+?:[0-9]{1,5}")) { _proxy_list.add(proxy); - HashMap proxy_info = new HashMap<>(); - proxy_info.put("extimestamp", null); - proxy_info.put("excount", 0); - _proxy_info.put(proxy.trim(), proxy_info); } } } - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); - _main_panel.getView().updateSmartProxyStatus("SmartProxy: " + _proxy_list.size()); + + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()}); } } catch (MalformedURLException ex) { diff --git a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java index 941de02cc..8f37685f3 100644 --- a/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/StreamChunkDownloader.java @@ -72,9 +72,7 @@ public class StreamChunkDownloader implements Runnable { if (error && current_proxy != null) { - Logger.getLogger(getClass().getName()).log(Level.WARNING, "{0} Worker [{1}]: excluding proxy -> {2}", new Object[]{Thread.currentThread().getName(), _id, current_proxy}); - - MainPanel.getProxy_manager().excludeProxy(current_proxy); + MainPanel.getProxy_manager().removeProxy(current_proxy); } current_proxy = MainPanel.getProxy_manager().getFastestProxy();