From 7b8ddd2c27ac0e622e998cec9fc11f428e6a1029 Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Fri, 8 Nov 2019 19:52:37 +0800 Subject: [PATCH] data class SessionKeyResponse --- .../protocol/tim/packet/login/Session.kt | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Session.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Session.kt index a47b9807c..0f11af402 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Session.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/login/Session.kt @@ -59,30 +59,29 @@ object RequestSessionPacket : PacketFactory<RequestSessionPacket.SessionKeyRespo } } - class SessionKeyResponse : Packet { - var sessionKey: SessionKey? = null - lateinit var tlv0105: ByteReadPacket - } + data class SessionKeyResponse( + val sessionKey: SessionKey, + val tlv0105: ByteReadPacket? = null + ) : Packet - override suspend fun ByteReadPacket.decode(id: PacketId, sequenceId: UShort, handler: BotNetworkHandler<*>): SessionKeyResponse = - SessionKeyResponse().apply { - when (remaining) { + override suspend fun ByteReadPacket.decode(id: PacketId, sequenceId: UShort, handler: BotNetworkHandler<*>): SessionKeyResponse { + when (remaining) { 407L -> { discardExact(25)//todo test - sessionKey = SessionKey(readBytes(16)) + return SessionKeyResponse(SessionKey(readBytes(16))) } 439L -> { discardExact(63) - sessionKey = SessionKey(readBytes(16)) + return SessionKeyResponse(SessionKey(readBytes(16))) } 502L,//? 512L, 527L -> { discardExact(63)//00 00 0D 00 06 00 01 00 00 00 00 00 1F 00 22 00 01 D7 EC FC 38 1B 74 6F 91 42 00 B9 DB 69 32 43 EC 8C 02 DC E0 07 35 58 8C 6C FE 43 5D AA 6A 88 E0 00 14 00 04 00 01 00 3C 01 0C 00 73 00 01 - sessionKey = SessionKey(readBytes(16)) - tlv0105 = buildPacket { + val sessionKey = SessionKey(readBytes(16)) + val tlv0105 = buildPacket { writeHex("01 05 00 88 00 01 01 02 00 40 02 01 03 3C 01 03 00 00") discardExact(remaining - 122 - 1) writeFully(readIoBuffer(56)) @@ -90,7 +89,7 @@ object RequestSessionPacket : PacketFactory<RequestSessionPacket.SessionKeyRespo discardExact(11) writeFully(readIoBuffer(56)) } //todo 这个 tlv0105似乎可以保存起来然后下次登录时使用. - + return SessionKeyResponse(sessionKey, tlv0105) /* Discarded(63) =00 00 0D 00 06 00 01 00 00 00 00 00 1F 00 22 00 01 F7 AB 01 4B 23 B5 47 FC 79 02 09 E0 19 EF 61 91 14 AD 8F 38 2E 8B D7 47 39 DE FE 84 A7 E5 6E 3D 00 14 00 04 00 01 00 3C 01 0C 00 73 00 01 sessionKey=7E 8C 1D AC 52 64 B8 D0 9A 55 3A A6 DF 53 88 C8 @@ -100,7 +99,7 @@ object RequestSessionPacket : PacketFactory<RequestSessionPacket.SessionKeyRespo */ } - else -> throw IllegalArgumentException(remaining.toString()) + else -> throw IllegalArgumentException(remaining.toString()) } } } \ No newline at end of file