rewrote dns fallback

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/utils/DNSHelper.java     | 15 ++---
src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java |  3 +
2 files changed, 9 insertions(+), 9 deletions(-)

Detailed changes

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

@@ -38,17 +38,14 @@ public class DNSHelper {
 	public static Bundle getSRVRecord(final Jid jid) throws IOException {
         final String host = jid.getDomainpart();
 		String dns[] = client.findDNS();
-
-		if (dns != null) {
-			for (String dnsserver : dns) {
-				InetAddress ip = InetAddress.getByName(dnsserver);
-				Bundle b = queryDNS(host, ip);
-				if (b.containsKey("values")) {
-					return b;
-				}
+		for (int i = 0; i < dns.length; ++i) {
+			InetAddress ip = InetAddress.getByName(dns[i]);
+			Bundle b = queryDNS(host, ip);
+			if (b.containsKey("values") || i == dns.length - 1) {
+				return b;
 			}
 		}
-		return queryDNS(host, InetAddress.getByName("8.8.8.8"));
+		return null;
 	}
 
 	public static Bundle queryDNS(String host, InetAddress dnsServer) {

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java 🔗

@@ -164,6 +164,9 @@ public class XmppConnection implements Runnable {
 				}
 			} else {
 				final Bundle result = DNSHelper.getSRVRecord(account.getServer());
+				if (result == null) {
+					throw new IOException("unhandled exception in DNS resolver");
+				}
 				final ArrayList<Parcelable> values = result.getParcelableArrayList("values");
 				if ("timeout".equals(result.getString("error"))) {
 					throw new IOException("timeout in dns");