That fuck shit the fascists are using
at master 47 lines 1.6 kB view raw
1package org.tm.archive.net; 2 3import androidx.annotation.NonNull; 4 5import org.signal.core.util.logging.Log; 6import org.tm.archive.dependencies.ApplicationDependencies; 7import org.tm.archive.util.NetworkUtil; 8 9import java.net.InetAddress; 10import java.net.UnknownHostException; 11import java.util.Arrays; 12import java.util.List; 13import java.util.Locale; 14 15import okhttp3.Dns; 16 17/** 18 * Iterates through an ordered list of {@link Dns}, trying each one in sequence. 19 */ 20public class SequentialDns implements Dns { 21 22 private static final String TAG = Log.tag(SequentialDns.class); 23 24 private List<Dns> dnsList; 25 26 public SequentialDns(Dns... dns) { 27 this.dnsList = Arrays.asList(dns); 28 } 29 30 @Override 31 public @NonNull List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException { 32 for (Dns dns : dnsList) { 33 try { 34 List<InetAddress> addresses = dns.lookup(hostname); 35 if (addresses.size() > 0) { 36 return addresses; 37 } else { 38 Log.w(TAG, String.format(Locale.ENGLISH, "Didn't find any addresses for %s using %s. Continuing.", hostname, dns.getClass().getSimpleName())); 39 } 40 } catch (UnknownHostException e) { 41 Log.w(TAG, String.format(Locale.ENGLISH, "Failed to resolve %s using %s. Continuing. Network Type: %s", hostname, dns.getClass().getSimpleName(), NetworkUtil.getNetworkTypeDescriptor(ApplicationDependencies.getApplication()))); 42 } 43 } 44 Log.w(TAG, "Failed to resolve using any DNS. Network Type: " + NetworkUtil.getNetworkTypeDescriptor(ApplicationDependencies.getApplication())); 45 throw new UnknownHostException(hostname); 46 } 47}