That fuck shit the fascists are using
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}