diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt index 4a41bfaefc724c74fcacae4076fd0cddf5a9d106..7a96a7c50d81ecfe786f47ea4d291113e668965a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt @@ -276,8 +276,10 @@ class QuasselService : DaggerLifecycleService(), .throttleFirst(1, TimeUnit.SECONDS) .toLiveData() .observe(this, Observer { - if (wasEverConnected && !sessionManager.hasErrored) - sessionManager.reconnect(true) + handlerService.backend { + if (wasEverConnected && !sessionManager.hasErrored) + sessionManager.reconnect(true) + } }) sessionManager.state @@ -287,11 +289,13 @@ class QuasselService : DaggerLifecycleService(), .toLiveData() .observe( this, Observer { - if (it == ConnectionState.DISCONNECTED || it == ConnectionState.CLOSED) { - if (wasEverConnected && !sessionManager.hasErrored) - sessionManager.reconnect() - } else { - wasEverConnected = true + handlerService.backend { + if (it == ConnectionState.DISCONNECTED || it == ConnectionState.CLOSED) { + if (wasEverConnected && !sessionManager.hasErrored) + sessionManager.reconnect() + } else { + wasEverConnected = true + } } }) 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 83755afa7e31a13f6a32b9b966bc3b6e1c7a0881..e8b28e00ad16557eced31c366c4aa3596ac3ff4f 100644 --- a/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt @@ -127,10 +127,11 @@ class CoreConnection( override fun close() { try { setState(ConnectionState.CLOSED) + channel?.flush() + channel?.close() interrupt() } catch (e: Throwable) { - log(WARN, - TAG, "Error encountered while closing connection", e) + log(WARN, TAG, "Error encountered while closing connection", e) } } @@ -200,14 +201,13 @@ 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()}") + log(WARN, TAG, "Error encountered in connection", e) + log(WARN, TAG, "Last sent message: ${MessageRunnable.lastSent.get()}") close() } } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt index 79f2c76b6a666fcfe7ed12c6d145e583fc42faf9..a7bd8957d20f209bcb1704479c547fb192f368a1 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/nio/WrappedChannel.kt @@ -186,6 +186,7 @@ class WrappedChannel( rawIn = null rawOut?.close() rawOut = null + socket.close() } /**