From d9c8959096d26df2e25e49ecc81abd7713729186 Mon Sep 17 00:00:00 2001 From: Him188 Date: Fri, 3 Jan 2020 19:07:48 +0800 Subject: [PATCH] Heartbeat timeout retry --- .../network/TIMPCBotNetworkHandler.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt b/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt index efbae44cc..888533269 100644 --- a/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt +++ b/mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/network/TIMPCBotNetworkHandler.kt @@ -473,10 +473,17 @@ internal class TIMPCBotNetworkHandler internal constructor(coroutineContext: Cor HeartbeatPacket(bot.qqAccount, sessionKey).sendAndExpect() } == null) { - bot.logger.warning("Heartbeat timed out") - delay(configuration.firstReconnectDelayMillis) - bot.tryReinitializeNetworkHandler(HeartbeatTimeoutException()) - return@launch + + // retry one time + if (withTimeoutOrNull(configuration.heartbeatTimeoutMillis) { + HeartbeatPacket(bot.qqAccount, sessionKey).sendAndExpect() + } == null) { + bot.logger.warning("Heartbeat timed out") + + delay(configuration.firstReconnectDelayMillis) + bot.tryReinitializeNetworkHandler(HeartbeatTimeoutException()) + return@launch + } } } }