diff --git a/pom.xml b/pom.xml index 016d004c1..575735c51 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 7.96 + 7.97 jar diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java index 48cfa237d..b7c0eb272 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java @@ -39,7 +39,7 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { private final Object _secure_notify_lock; private volatile boolean _error_wait; private volatile boolean _chunk_exception; - private boolean _notified; + private volatile boolean _notified; private final ArrayList _excluded_proxy_list; private volatile boolean _reset_current_chunk; private volatile InputStream _chunk_inputstream = null; diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkUploader.java b/src/main/java/com/tonikelope/megabasterd/ChunkUploader.java index 339c70b29..b95b9896d 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkUploader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkUploader.java @@ -41,7 +41,7 @@ public class ChunkUploader implements Runnable, SecureSingleThreadNotifiable { private volatile boolean _exit; private final Object _secure_notify_lock; private volatile boolean _error_wait; - private boolean _notified; + private volatile boolean _notified; private volatile boolean _chunk_exception; public ChunkUploader(int id, Upload upload) { diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkWriterManager.java b/src/main/java/com/tonikelope/megabasterd/ChunkWriterManager.java index ec9d2120e..b71a2bc60 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkWriterManager.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkWriterManager.java @@ -75,7 +75,7 @@ public class ChunkWriterManager implements Runnable, SecureSingleThreadNotifiabl private final byte[] _byte_iv; private volatile boolean _exit; private final Object _secure_notify_lock; - private boolean _notified; + private volatile boolean _notified; private final String _chunks_dir; public ChunkWriterManager(Download downloader) throws Exception { @@ -240,13 +240,7 @@ public class ChunkWriterManager implements Runnable, SecureSingleThreadNotifiabl LOG.log(Level.INFO, "{0} ChunkWriterManager waiting for chunk [{1}] {2}...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written + 1, _download.getFile_name()}); - try { - synchronized (_secure_notify_lock) { - _secure_notify_lock.wait(1000); - } - } catch (InterruptedException ex) { - Logger.getLogger(ChunkWriterManager.class.getName()).log(Level.SEVERE, null, ex); - } + secureWait(); } diff --git a/src/main/java/com/tonikelope/megabasterd/ClipboardSpy.java b/src/main/java/com/tonikelope/megabasterd/ClipboardSpy.java index 90e407cc9..998a15882 100644 --- a/src/main/java/com/tonikelope/megabasterd/ClipboardSpy.java +++ b/src/main/java/com/tonikelope/megabasterd/ClipboardSpy.java @@ -30,7 +30,7 @@ public class ClipboardSpy implements Runnable, ClipboardOwner, SecureSingleThrea private final Clipboard _sysClip; - private boolean _notified; + private volatile boolean _notified; private final ConcurrentLinkedQueue _observers; diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java index 02848808a..dee11f0be 100644 --- a/src/main/java/com/tonikelope/megabasterd/Download.java +++ b/src/main/java/com/tonikelope/megabasterd/Download.java @@ -72,7 +72,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif private final Object _chunkid_lock; private final Object _dl_url_lock; private final Object _turbo_proxy_lock; - private boolean _notified; + private volatile boolean _notified; private final String _url; private final String _download_path; private final String _custom_chunks_dir; @@ -1526,7 +1526,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _auto_retry_on_error = Arrays.asList(FATAL_API_ERROR_CODES_WITH_RETRY).contains(error_code); - stopDownloader(ex.getMessage() + " " + truncateText(link, 80)); + stopDownloader(error_code == -16 ? _status_error : ex.getMessage() + " " + truncateText(link, 80)); } else { diff --git a/src/main/java/com/tonikelope/megabasterd/KissVideoStreamServer.java b/src/main/java/com/tonikelope/megabasterd/KissVideoStreamServer.java index 4fc84f3e5..73e3c16ab 100644 --- a/src/main/java/com/tonikelope/megabasterd/KissVideoStreamServer.java +++ b/src/main/java/com/tonikelope/megabasterd/KissVideoStreamServer.java @@ -50,7 +50,7 @@ public class KissVideoStreamServer implements HttpHandler, SecureSingleThreadNot private final ConcurrentHashMap> _link_cache; private final ConcurrentLinkedQueue _working_threads; private final ContentType _ctype; - private boolean _notified; + private volatile boolean _notified; private final Object _secure_notify_lock; public KissVideoStreamServer(MainPanel panel) { diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index 09e9569c4..e25413a6f 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -70,7 +70,7 @@ import javax.swing.UIManager; */ public final class MainPanel { - public static final String VERSION = "7.96"; + public static final String VERSION = "7.97"; public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; diff --git a/src/main/java/com/tonikelope/megabasterd/ProgressMeter.java b/src/main/java/com/tonikelope/megabasterd/ProgressMeter.java index c3ec00980..8517669b2 100644 --- a/src/main/java/com/tonikelope/megabasterd/ProgressMeter.java +++ b/src/main/java/com/tonikelope/megabasterd/ProgressMeter.java @@ -24,7 +24,7 @@ public class ProgressMeter implements Runnable, SecureSingleThreadNotifiable { private final Transference _transference; private volatile boolean _exit; private final Object _secure_notify_lock; - private boolean _notified; + private volatile boolean _notified; private long _progress; ProgressMeter(Transference transference) { diff --git a/src/main/java/com/tonikelope/megabasterd/Transference.java b/src/main/java/com/tonikelope/megabasterd/Transference.java index 4b69a6306..0a7abb90d 100644 --- a/src/main/java/com/tonikelope/megabasterd/Transference.java +++ b/src/main/java/com/tonikelope/megabasterd/Transference.java @@ -28,7 +28,7 @@ public interface Transference { boolean LIMIT_TRANSFERENCE_SPEED_DEFAULT = false; int MAX_TRANSFERENCE_SPEED_DEFAULT = 5; int MAX_WAIT_WORKERS_SHUTDOWN = 15; - Integer[] FATAL_API_ERROR_CODES = {-2, -4, -8, -14, -15, -17, 22, 23, 24}; + Integer[] FATAL_API_ERROR_CODES = {-2, -4, -8, -14, -15, -16, -17, 22, 23, 24}; Integer[] FATAL_API_ERROR_CODES_WITH_RETRY = {-4}; void start(); diff --git a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java index 3509485be..664c14cb7 100644 --- a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java +++ b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java @@ -51,7 +51,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea private final Object _secure_notify_lock; private final Object _wait_queue_lock; private final Object _pause_all_lock; - private boolean _notified; + private volatile boolean _notified; private volatile boolean _removing_transferences; private volatile boolean _provisioning_transferences; private volatile boolean _starting_transferences; diff --git a/src/main/java/com/tonikelope/megabasterd/Upload.java b/src/main/java/com/tonikelope/megabasterd/Upload.java index 12050cfa5..8f7b956eb 100644 --- a/src/main/java/com/tonikelope/megabasterd/Upload.java +++ b/src/main/java/com/tonikelope/megabasterd/Upload.java @@ -64,7 +64,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia private final ExecutorService _thread_pool; private volatile int[] _file_meta_mac; private String _fid; - private boolean _notified; + private volatile boolean _notified; private volatile String _completion_handler; private int _paused_workers; private Double _progress_bar_rate; diff --git a/src/main/java/com/tonikelope/megabasterd/UploadMACGenerator.java b/src/main/java/com/tonikelope/megabasterd/UploadMACGenerator.java index 599cc1c3c..ba8615356 100644 --- a/src/main/java/com/tonikelope/megabasterd/UploadMACGenerator.java +++ b/src/main/java/com/tonikelope/megabasterd/UploadMACGenerator.java @@ -31,7 +31,7 @@ public class UploadMACGenerator implements Runnable, SecureSingleThreadNotifiabl private final Upload _upload; private final Object _secure_notify_lock; - private boolean _notified; + private volatile boolean _notified; private volatile boolean _exit; public final ConcurrentHashMap CHUNK_QUEUE = new ConcurrentHashMap<>(); diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png index 2f9c39fcb..3c8acb405 100644 Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ