From 3e8fc8e1ecd505fa76e159fa703857b89725d58c Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Tue, 8 Jun 2021 12:16:26 +0800
Subject: [PATCH] Do not pass failed `IncomingPacket` to `PacketFactory`s

---
 .../src/commonMain/kotlin/network/components/PacketHandler.kt    | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt b/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
index f82cb4806..51370af96 100644
--- a/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/PacketHandler.kt
@@ -92,6 +92,7 @@ internal class CallPacketFactoryPacketHandler(
 ) : PacketHandler {
 
     override suspend fun handlePacket(incomingPacket: IncomingPacket) {
+        if (incomingPacket.exception != null) return // failure
         val factory = KnownPacketFactories.findPacketFactory(incomingPacket.commandName) ?: return
         factory.cast<PacketFactory<Packet?>>().run {
             when (this) {