diff --git a/app/src/main/java/eu/faircode/email/DnsHelper.java b/app/src/main/java/eu/faircode/email/DnsHelper.java index a808c915e8..532394db4e 100644 --- a/app/src/main/java/eu/faircode/email/DnsHelper.java +++ b/app/src/main/java/eu/faircode/email/DnsHelper.java @@ -63,6 +63,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.Socket; import java.net.URL; import java.net.UnknownHostException; @@ -434,7 +435,10 @@ public class DnsHelper { @Override public DnsQueryResult query(DnsMessage query, InetAddress address, int port) throws IOException { // https://datatracker.ietf.org/doc/html/rfc7858 - try (Socket socket = SSLSocketFactory.getDefault().createSocket(host, 853)) { + try (Socket socket = SSLSocketFactory.getDefault().createSocket()) { + socket.connect(new InetSocketAddress(host, 853), timeout); + socket.setSoTimeout(timeout); + byte[] out = query.toArray(); OutputStream os = socket.getOutputStream(); os.write(out.length / 256); @@ -492,8 +496,8 @@ public class DnsHelper { request = (HttpsURLConnection) url.openConnection(); request.setRequestMethod("GET"); request.setRequestProperty("Content-Type", "application/dns-message"); - request.setReadTimeout(timeout * 1000); - request.setConnectTimeout(timeout * 1000); + request.setReadTimeout(timeout); + request.setConnectTimeout(timeout); request.setDoInput(true); request.connect(); @@ -572,7 +576,7 @@ public class DnsHelper { }); try { - if (!sem.tryAcquire(timeout, TimeUnit.SECONDS)) + if (!sem.tryAcquire(timeout, TimeUnit.MILLISECONDS)) ex = new IOException("timeout"); } catch (InterruptedException e) { ex = new IOException("interrupted");