diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 580f23a22..e4ad6b9fe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -261,6 +261,8 @@
+
diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SignalProxyUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/SignalProxyUtil.java
index 735167726..bff3ae276 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/util/SignalProxyUtil.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/util/SignalProxyUtil.java
@@ -103,11 +103,17 @@ public final class SignalProxyUtil {
* If this is a valid proxy deep link, this will return the embedded host. If not, it will return
* null.
*/
- public static @Nullable String parseHostFromProxyDeepLink(@NonNull String proxyLink) {
+ public static @Nullable String parseHostFromProxyDeepLink(@Nullable String proxyLink) {
+ if (proxyLink == null) {
+ return null;
+ }
+
try {
URI uri = new URI(proxyLink);
- if (!"https".equalsIgnoreCase(uri.getScheme())) {
+ if (!"https".equalsIgnoreCase(uri.getScheme()) &&
+ !"sgnl".equalsIgnoreCase(uri.getScheme()))
+ {
return null;
}
diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/SignalProxyUtilText_parseHostFromProxyDeepLink.java b/app/src/test/java/org/thoughtcrime/securesms/util/SignalProxyUtilText_parseHostFromProxyDeepLink.java
new file mode 100644
index 000000000..a9fe76978
--- /dev/null
+++ b/app/src/test/java/org/thoughtcrime/securesms/util/SignalProxyUtilText_parseHostFromProxyDeepLink.java
@@ -0,0 +1,43 @@
+package org.thoughtcrime.securesms.util;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import static junit.framework.TestCase.assertEquals;
+
+@RunWith(Parameterized.class)
+public class SignalProxyUtilText_parseHostFromProxyDeepLink {
+
+ private final String input;
+ private final String output;
+
+ @Parameterized.Parameters
+ public static Collection