summaryrefslogtreecommitdiff
path: root/core/src/main/java/de
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-03-04 10:45:19 +0100
committerByteHamster <info@bytehamster.com>2021-03-04 10:45:19 +0100
commit352df348cb97ef0ceac5db8b22447d673cbb290e (patch)
tree915db80edf41464f9d5e5831fb0603091c2e0447 /core/src/main/java/de
parent878da84666bf37401aeb4ba595977ce54effd93f (diff)
downloadAntennaPod-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.java16
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java3
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;