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

View File

@ -123,6 +123,11 @@ public class XmppConnection implements Runnable {
packetCallbacks.clear(); packetCallbacks.clear();
this.changeStatus(Account.STATUS_CONNECTING); this.changeStatus(Account.STATUS_CONNECTING);
Bundle namePort = DNSHelper.getSRVRecord(account.getServer()); 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"); String srvRecordServer = namePort.getString("name");
int srvRecordPort = namePort.getInt("port"); int srvRecordPort = namePort.getInt("port");
if (srvRecordServer != null) { if (srvRecordServer != null) {