diff --git a/mirai-core/src/commonMain/kotlin/network/components/HeartbeatScheduler.kt b/mirai-core/src/commonMain/kotlin/network/components/HeartbeatScheduler.kt index ea64c1bef..23321590f 100644 --- a/mirai-core/src/commonMain/kotlin/network/components/HeartbeatScheduler.kt +++ b/mirai-core/src/commonMain/kotlin/network/components/HeartbeatScheduler.kt @@ -14,6 +14,7 @@ import net.mamoe.mirai.internal.network.component.ComponentKey import net.mamoe.mirai.internal.network.component.ComponentStorage import net.mamoe.mirai.internal.network.context.SsoProcessorContext import net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport +import net.mamoe.mirai.internal.network.handler.selector.PacketTimeoutException import net.mamoe.mirai.utils.BotConfiguration.HeartbeatStrategy.* import net.mamoe.mirai.utils.MiraiLogger import net.mamoe.mirai.utils.info @@ -101,11 +102,11 @@ internal class TimeBasedHeartbeatSchedulerImpl( } try { - withTimeoutOrNull(timeout()) { + withTimeout(timeout()) { action() - } ?: error("Timeout $name.") + } } catch (e: Throwable) { - onHeartFailure(name, e) + onHeartFailure(name, PacketTimeoutException("Timeout receiving Heartbeat response", e)) } } }.apply { diff --git a/mirai-core/src/commonMain/kotlin/network/handler/selector/PacketTimeoutException.kt b/mirai-core/src/commonMain/kotlin/network/handler/selector/PacketTimeoutException.kt new file mode 100644 index 000000000..d5306ad2a --- /dev/null +++ b/mirai-core/src/commonMain/kotlin/network/handler/selector/PacketTimeoutException.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2019-2021 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/dev/LICENSE + */ + +package net.mamoe.mirai.internal.network.handler.selector + +internal data class PacketTimeoutException( + override val message: String, + override val cause: Throwable? = null, +) : NetworkException(true) \ No newline at end of file diff --git a/mirai-core/src/commonMain/kotlin/network/impl/netty/HeartbeatFailedException.kt b/mirai-core/src/commonMain/kotlin/network/impl/netty/HeartbeatFailedException.kt index 94e9a9802..bcdc97b6c 100644 --- a/mirai-core/src/commonMain/kotlin/network/impl/netty/HeartbeatFailedException.kt +++ b/mirai-core/src/commonMain/kotlin/network/impl/netty/HeartbeatFailedException.kt @@ -10,7 +10,6 @@ package net.mamoe.mirai.internal.network.impl.netty import net.mamoe.mirai.internal.network.handler.selector.NetworkException -import net.mamoe.mirai.utils.unwrap import net.mamoe.mirai.utils.unwrapCancellationException import java.io.IOException