From 6489a41e6d884b9d96c49b62ea14e5cd1e26b3b5 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 7 Jul 2021 09:55:49 +0200 Subject: [PATCH] Catch handshake errors --- .../java/eu/faircode/email/EmailProvider.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EmailProvider.java b/app/src/main/java/eu/faircode/email/EmailProvider.java index 0bb3b482d2..4a93aaea00 100644 --- a/app/src/main/java/eu/faircode/email/EmailProvider.java +++ b/app/src/main/java/eu/faircode/email/EmailProvider.java @@ -820,10 +820,15 @@ public class EmailProvider implements Parcelable { socket.setSoTimeout(SCAN_TIMEOUT); - try (SSLSocket sslSocket = starttls - ? starttls(socket, context) - : (SSLSocket) socket) { + SSLSocket sslSocket = null; + try { + if (starttls) + sslSocket = starttls(socket, context); + else + sslSocket = (SSLSocket) socket; + sslSocket.startHandshake(); + Certificate[] certs = sslSocket.getSession().getPeerCertificates(); for (Certificate cert : certs) if (cert instanceof X509Certificate) { @@ -842,6 +847,13 @@ public class EmailProvider implements Parcelable { // Typical: // javax.net.ssl.SSLException: Unable to parse TLS packet header EntityLog.log(context, "Handshake " + address + ": " + Log.formatThrowable(ex)); + } finally { + try { + if (sslSocket != null) + sslSocket.close(); + } catch (Throwable ex) { + Log.e(ex); + } } EntityLog.log(context, "Reachable " + address);