treat dns timeouts as temporary. also increased timeout

This commit is contained in:
Daniel Gultsch 2014-03-28 19:00:01 +01:00
parent 268eae7813
commit 38efb84690
2 changed files with 8 additions and 3 deletions

View File

@ -31,7 +31,7 @@ public class DNSHelper {
ip = InetAddress.getByName(value);
servers.add(value);
Bundle result = queryDNS(host, ip);
if (!result.containsKey("error")) {
if (!result.containsKey("error")||("nosrv".equals(result.getString("error")))) {
return result;
}
}
@ -80,7 +80,7 @@ public class DNSHelper {
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
datagramSocket.setSoTimeout(3000);
datagramSocket.setSoTimeout(7000); //die sieben ist meine zahl
datagramSocket.receive(receivePacket);
if (receiveData[3] != -128) {
namePort.putString("error", "nosrv");
@ -117,7 +117,7 @@ public class DNSHelper {
}
} catch (IOException e) {
Log.d("xmppService", "io execpiton during dns");
namePort.putString("error", "nosrv");
namePort.putString("error", "timeout");
return namePort;
}
}

View File

@ -123,6 +123,11 @@ public class XmppConnection implements Runnable {
packetCallbacks.clear();
this.changeStatus(Account.STATUS_CONNECTING);
Bundle namePort = DNSHelper.getSRVRecord(account.getServer());
if ("timeout".equals(namePort.getString("error"))) {
Log.d(LOGTAG,account.getJid()+": dns timeout");
this.changeStatus(Account.STATUS_OFFLINE);
return;
}
String srvRecordServer = namePort.getString("name");
int srvRecordPort = namePort.getInt("port");
if (srvRecordServer != null) {