From 5f3bda61beac791e24e6b73f4ea6780bb89d498e Mon Sep 17 00:00:00 2001 From: Davide Pianca <davidepianca98@gmail.com> Date: Thu, 8 Aug 2024 09:28:51 +0200 Subject: [PATCH] Close server socket on initialization error on JVM --- .../kotlin/socket/tls/TLSServerSocket.kt | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/kmqtt-broker/src/jvmMain/kotlin/socket/tls/TLSServerSocket.kt b/kmqtt-broker/src/jvmMain/kotlin/socket/tls/TLSServerSocket.kt index b527681..7d252a7 100644 --- a/kmqtt-broker/src/jvmMain/kotlin/socket/tls/TLSServerSocket.kt +++ b/kmqtt-broker/src/jvmMain/kotlin/socket/tls/TLSServerSocket.kt @@ -27,17 +27,22 @@ internal actual class TLSServerSocket actual constructor( private val sslContext = SSLContext.getInstance(broker.tlsSettings!!.version) init { - val keyStore = KeyStore.getInstance("PKCS12") - File(broker.tlsSettings!!.keyStoreFilePath).inputStream().use { - keyStore.load(it, broker.tlsSettings.keyStorePassword?.toCharArray()) - } - val keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()) - keyManagerFactory.init(keyStore, broker.tlsSettings.keyStorePassword?.toCharArray()) + try { + val keyStore = KeyStore.getInstance("PKCS12") + File(broker.tlsSettings!!.keyStoreFilePath).inputStream().use { + keyStore.load(it, broker.tlsSettings.keyStorePassword?.toCharArray()) + } + val keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()) + keyManagerFactory.init(keyStore, broker.tlsSettings.keyStorePassword?.toCharArray()) - sslContext.init(keyManagerFactory.keyManagers, null, null) + sslContext.init(keyManagerFactory.keyManagers, null, null) - val initSession = sslContext.createSSLEngine().session - initSession.invalidate() + val initSession = sslContext.createSSLEngine().session + initSession.invalidate() + } catch (e: Exception) { + close() + throw e + } } private fun buildKeyManagers( -- GitLab