diff options
author | ByteHamster <info@bytehamster.com> | 2021-03-04 10:45:19 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2021-03-04 10:45:19 +0100 |
commit | 352df348cb97ef0ceac5db8b22447d673cbb290e (patch) | |
tree | 915db80edf41464f9d5e5831fb0603091c2e0447 /core/src/main/java/de | |
parent | 878da84666bf37401aeb4ba595977ce54effd93f (diff) | |
download | AntennaPod-352df348cb97ef0ceac5db8b22447d673cbb290e.zip |
Show dedicated error message when an app messes with the network
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java | 16 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index b553a9d1f..3a87e0c94 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -19,6 +19,8 @@ import java.net.URI; import java.net.UnknownHostException; import java.util.Collections; import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -37,6 +39,7 @@ public class HttpDownloader extends Downloader { private static final String TAG = "HttpDownloader"; private static final int BUFFER_SIZE = 8 * 1024; + private static final String REGEX_PATTERN_IP_ADDRESS = "([0-9]{1,3}[\\.]){3}[0-9]{1,3}"; public HttpDownloader(@NonNull DownloadRequest request) { super(request); @@ -250,6 +253,19 @@ public class HttpDownloader extends Downloader { onFail(DownloadError.ERROR_UNKNOWN_HOST, e.getMessage()); } catch (IOException e) { e.printStackTrace(); + String message = e.getMessage(); + if (message != null) { + // Try to parse message for a more detailed error message + Pattern pattern = Pattern.compile(REGEX_PATTERN_IP_ADDRESS); + Matcher matcher = pattern.matcher(message); + if (matcher.find()) { + String ip = matcher.group(); + if (ip.startsWith("127.") || ip.startsWith("0.")) { + onFail(DownloadError.ERROR_IO_BLOCKED, e.getMessage()); + return; + } + } + } onFail(DownloadError.ERROR_IO_ERROR, e.getMessage()); } catch (NullPointerException e) { // might be thrown by connection.getInputStream() diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java b/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java index 3865a18f0..9fb1b248b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java @@ -23,7 +23,8 @@ public enum DownloadError { ERROR_UNAUTHORIZED(14, R.string.download_error_unauthorized), ERROR_FILE_TYPE(15, R.string.download_error_file_type_type), ERROR_FORBIDDEN(16, R.string.download_error_forbidden), - ERROR_IO_WRONG_SIZE(17, R.string.download_wrong_size); + ERROR_IO_WRONG_SIZE(17, R.string.download_wrong_size), + ERROR_IO_BLOCKED(18, R.string.download_blocked); private final int code; private final int resId; |