summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-12-10 22:05:57 +0100
committerByteHamster <info@bytehamster.com>2019-12-10 23:01:19 +0100
commit4530413d97e080a6dde2d16a57a7d5499e18f895 (patch)
treea714f8900607599da5f8b77111707d5824dc3580
parenta99a41e3bb429632ecb0b28ef3d9d0dbbad826f9 (diff)
downloadAntennaPod-4530413d97e080a6dde2d16a57a7d5499e18f895.zip
Fix DownloadService deadlock
downloadExecutor.take() clears the interrupted state of the thread when throwing an InterruptedException. When getting this exception, we need to return instead of relying on the loop to get cancelled.
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 0528fc3dc..04c1190a7 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -260,7 +260,6 @@ public class DownloadService extends Service {
removeDownload(downloader);
numberOfDownloads.decrementAndGet();
queryDownloadsAsync();
-
});
} else {
handleFailedDownload(downloader);
@@ -270,8 +269,10 @@ public class DownloadService extends Service {
}
} catch (InterruptedException e) {
Log.e(TAG, "DownloadCompletionThread was interrupted");
+ return;
} catch (ExecutionException e) {
Log.e(TAG, "ExecutionException in DownloadCompletionThread: " + e.getMessage());
+ return;
}
}
Log.d(TAG, "End of downloadCompletionThread");