From 4f827e967fee9633840527bdff2ea9f46ab161d2 Mon Sep 17 00:00:00 2001 From: StageGuard <1355416608@qq.com> Date: Wed, 15 Feb 2023 19:24:24 +0800 Subject: [PATCH] [core] don't catch IllegalStateException in QRCodeLoginProcessor --- .../components/QRCodeLoginProcessor.kt | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/components/QRCodeLoginProcessor.kt b/mirai-core/src/commonMain/kotlin/network/components/QRCodeLoginProcessor.kt index 2cac05ac1..351ac02bd 100644 --- a/mirai-core/src/commonMain/kotlin/network/components/QRCodeLoginProcessor.kt +++ b/mirai-core/src/commonMain/kotlin/network/components/QRCodeLoginProcessor.kt @@ -90,37 +90,23 @@ internal class QRCodeLoginProcessorImpl( override suspend fun process(handler: NetworkHandler, client: QQAndroidClient): QRCodeLoginData { main@ while (true) { // TODO: add new bot config property to set times of fetching qrcode - val qrCodeData = try { - requestQRCode(handler, client) - } catch (e: IllegalStateException) { - logger.warning(e) - continue@main - } + val qrCodeData = requestQRCode(handler, client) state@ while (true) { - val status = try { - queryQRCodeStatus(handler, client, qrCodeData.sig) - } catch (e: IllegalStateException) { - logger.warning(e) - delay(5000) // TODO: add new bot config property to set interval of querying qrcode state - continue@state - } - - when(status) { + when(val status = queryQRCodeStatus(handler, client, qrCodeData.sig)) { is WtLogin.TransEmp.TransEmpResponse.QRCodeConfirmed -> { return status.data } is WtLogin.TransEmp.TransEmpResponse.QRCodeStatus -> when(status.state) { WtLogin.TransEmp.TransEmpResponse.QRCodeStatus.State.TIMEOUT, WtLogin.TransEmp.TransEmpResponse.QRCodeStatus.State.CANCELLED -> { - val e = IllegalStateException("QRCode cancelled. sig=${qrCodeData.sig.toUHexString()}") - logger.warning(e) break@state } - else -> { delay(5000) } // WAITING_FOR_SCAN or WAITING_FOR_CONFIRM + else -> { } // WAITING_FOR_SCAN or WAITING_FOR_CONFIRM } // status is FetchQRCode, which is unreachable. - else -> { break@state } + else -> { error("query qrcode status packet should not be FetchQRCode.") } } + delay(5000) } } }