From 61b63eb2544967c8383297a36a0d3ccc54e9c685 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 20 Apr 2018 17:16:23 +0200 Subject: [PATCH] Fixing SSL handshake bug --- .../ssl/custom/QuasselHostnameManager.kt | 1 - .../libquassel/connection/CoreConnection.kt | 20 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ssl/custom/QuasselHostnameManager.kt b/app/src/main/java/de/kuschku/quasseldroid/ssl/custom/QuasselHostnameManager.kt index 88320e971..ab8c130d0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ssl/custom/QuasselHostnameManager.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ssl/custom/QuasselHostnameManager.kt @@ -11,7 +11,6 @@ class QuasselHostnameManager( fun isValid(address: SocketAddress, chain: Array<out X509Certificate>): Boolean { val leafCertificate = chain.firstOrNull() ?: return false val whitelistEntry = hostnameWhitelist.find(leafCertificate.fingerprint, address.host) - val all = hostnameWhitelist.all() return whitelistEntry != null } } diff --git a/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt index e8b28e00a..c23cf9c40 100644 --- a/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt @@ -202,13 +202,21 @@ class CoreConnection( } } channel?.close() - } catch (e: QuasselSecurityException) { - close() - securityExceptionCallback(e) } catch (e: Throwable) { - log(WARN, TAG, "Error encountered in connection", e) - log(WARN, TAG, "Last sent message: ${MessageRunnable.lastSent.get()}") - close() + var cause: Throwable? = e + var exception: QuasselSecurityException? + do { + exception = cause as? QuasselSecurityException + cause = cause?.cause + } while (cause != null && exception == null) + if (exception != null) { + close() + securityExceptionCallback(exception) + } else { + log(WARN, TAG, "Error encountered in connection", e) + log(WARN, TAG, "Last sent message: ${MessageRunnable.lastSent.get()}") + close() + } } } -- GitLab