From 6bef518ac0a60c27e64d2f5d27bb0baf7d711c5d Mon Sep 17 00:00:00 2001 From: Mygod Date: Sat, 18 Jul 2020 03:28:14 +0800 Subject: [PATCH] Make sure unregistering callback is not cancelled --- .../main/java/be/mygod/librootkotlinx/RootServer.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mobile/src/main/java/be/mygod/librootkotlinx/RootServer.kt b/mobile/src/main/java/be/mygod/librootkotlinx/RootServer.kt index b64900de..b2c8d77e 100644 --- a/mobile/src/main/java/be/mygod/librootkotlinx/RootServer.kt +++ b/mobile/src/main/java/be/mygod/librootkotlinx/RootServer.kt @@ -480,10 +480,9 @@ class RootServer @JvmOverloads constructor(private val warnLogger: (String) -> U { output.pushResult(callback, result) } } catch (e: Throwable) { { output.pushThrowable(callback, e) } - } finally { - cancellables.remove(callback) } - withContext(callbackWorker) { result() } + cancellables.remove(callback) + withContext(callbackWorker + NonCancellable) { result() } } } is RootCommandChannel<*> -> defaultWorker.launch { @@ -502,10 +501,9 @@ class RootServer @JvmOverloads constructor(private val warnLogger: (String) -> U } } catch (e: Throwable) { { output.pushThrowable(callback, e) } - } finally { - cancellables.remove(callback) } - withContext(callbackWorker) { result() } + cancellables.remove(callback) + withContext(callbackWorker + NonCancellable) { result() } } is Shutdown -> break@loop else -> throw IllegalArgumentException("Unrecognized input: $command")