diff options
author | ByteHamster <info@bytehamster.com> | 2019-12-10 22:05:57 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2019-12-10 23:01:19 +0100 |
commit | 4530413d97e080a6dde2d16a57a7d5499e18f895 (patch) | |
tree | a714f8900607599da5f8b77111707d5824dc3580 /core | |
parent | a99a41e3bb429632ecb0b28ef3d9d0dbbad826f9 (diff) | |
download | AntennaPod-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.
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java | 3 |
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"); |