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