Try doing fallbacks ourselves under 1.1.1

Stephen Paul Weber created

Change summary

build.gradle                                             |  2 
src/cheogram/java/com/cheogram/android/DnsFallback.java  | 28 ++++++++++
src/main/java/eu/siacs/conversations/utils/Resolver.java |  1 
3 files changed, 30 insertions(+), 1 deletion(-)

Detailed changes

build.gradle 🔗

@@ -81,7 +81,7 @@ dependencies {
     implementation 'org.bouncycastle:bcmail-jdk18on:1.78.1'
     implementation 'org.bouncycastle:bcpg-jdk18on:1.78.1'
     implementation 'com.google.zxing:core:3.5.3'
-    implementation 'org.minidns:minidns-hla:1.0.5'
+    implementation 'org.minidns:minidns-hla:1.1.1'
     implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
     implementation 'org.whispersystems:signal-protocol-java:2.6.2'
     implementation "com.wefika:flowlayout:0.4.1"

src/cheogram/java/com/cheogram/android/DnsFallback.java 🔗

@@ -0,0 +1,28 @@
+package com.cheogram.android;
+
+import android.content.Context;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.minidns.dnsserverlookup.AbstractDnsServerLookupMechanism;
+import org.minidns.dnsserverlookup.AndroidUsingExec;
+
+public class DnsFallback extends AbstractDnsServerLookupMechanism {
+
+    public DnsFallback() {
+        super("DnsFallback", AndroidUsingExec.PRIORITY + 1000);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public List<String> getDnsServerAddresses() {
+        return List.of("9.9.9.9");
+    }
+}

src/main/java/eu/siacs/conversations/utils/Resolver.java 🔗

@@ -234,6 +234,7 @@ public class Resolver {
         DnsClient.removeDNSServerLookupMechanism(AndroidUsingExec.INSTANCE);
         DnsClient.addDnsServerLookupMechanism(AndroidUsingExecLowPriority.INSTANCE);
         DnsClient.addDnsServerLookupMechanism(new AndroidUsingLinkProperties(service));
+        DnsClient.addDnsServerLookupMechanism(new com.cheogram.android.DnsFallback());
         final AbstractDnsClient client = ResolverApi.INSTANCE.getClient();
         if (client instanceof ReliableDnsClient) {
             ((ReliableDnsClient) client).setUseHardcodedDnsServers(false);