From 48f9ca0d48c1a3c28ed1c5acbd3c2c0879f814ea Mon Sep 17 00:00:00 2001 From: sandtechnology <20417547+sandtechnology@users.noreply.github.com> Date: Sat, 19 Jun 2021 00:00:16 +0800 Subject: [PATCH] Fix #1334, update pb and fix private image upload issue (#1335) * Fix #1334, update pb and fix private image upload issue * Keeping consistent in annotation * Restore old comment * Let extendinfo default to null --- .../src/commonMain/kotlin/contact/AbstractUser.kt | 3 ++- .../commonMain/kotlin/network/highway/Highway.kt | 8 +++++--- .../kotlin/network/protocol/data/proto/Cmd0x352.kt | 14 +++++++------- .../kotlin/network/protocol/data/proto/Highway.kt | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt index 438f86c2c..0514fc86d 100644 --- a/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt +++ b/mirai-core/src/commonMain/kotlin/contact/AbstractUser.kt @@ -64,7 +64,8 @@ internal abstract class AbstractUser( fileMd5 = resource.md5, fileSize = resource.size, fileName = resource.md5.toUHexString("") + "." + resource.formatName, - imgOriginal = 1, + imgOriginal = true, + buildVer = bot.client.buildVer ) ).sendAndExpect<LongConn.OffPicUp.Response>() } diff --git a/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt b/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt index f34ceb33e..a823eea93 100644 --- a/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt +++ b/mirai-core/src/commonMain/kotlin/network/highway/Highway.kt @@ -57,7 +57,7 @@ internal object Highway { resource: ExternalResource, kind: ResourceKind, commandId: Int, // group image=2, friend image=1, groupPtt=29 - extendInfo: ByteArray = EMPTY_BYTE_ARRAY, + extendInfo: ByteArray? = null, encrypt: Boolean = false, initialTicket: ByteArray? = null, // null then use sig session tryOnce: Boolean = false, @@ -99,7 +99,9 @@ internal object Highway { dataFlag = dataFlag, localeId = localeId, fileMd5 = md5, - extendInfo = if (encrypt) TEA.encrypt(extendInfo, bdhSession.sessionKey) else extendInfo, + extendInfo = extendInfo?.let { + if (encrypt) TEA.encrypt(extendInfo, bdhSession.sessionKey) else extendInfo + }, callback = callback ).sendConcurrently( createConnection = { createConnection(ip, port) }, @@ -366,7 +368,7 @@ internal fun highwayPacketSession( data: ExternalResource, fileMd5: ByteArray, sizePerPacket: Int = ByteArrayPool.BUFFER_SIZE, - extendInfo: ByteArray = EMPTY_BYTE_ARRAY, + extendInfo: ByteArray? = null, callback: Highway.ProgressionCallback? = null, ): ChunkedFlowSession<ByteReadPacket> { ByteArrayPool.checkBufferSize(sizePerPacket) diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt index d0dc0ef09..f95c74333 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt @@ -117,17 +117,17 @@ internal class Cmd0x352 : ProtoBuf { internal class TryUpImgReq( @ProtoNumber(1) @JvmField val srcUin: Long, @ProtoNumber(2) @JvmField val dstUin: Long, - @ProtoNumber(3) @JvmField val fileId: Int = 0,//从0开始的自增数?貌似有一个连接就要自增1, 但是又会重置回0 + @ProtoNumber(3) @JvmField val fileId: Long = 0L,//从0开始的自增数?貌似有一个连接就要自增1, 但是又会重置回0 @ProtoNumber(4) @JvmField val fileMd5: ByteArray, - @ProtoNumber(5) @JvmField val fileSize: Long, - @ProtoNumber(6) @JvmField val fileName: String,//默认为md5+".jpg" + @ProtoNumber(5) @JvmField val fileSize: Long,//默认为md5+".jpg" + @ProtoNumber(6) @JvmField val fileName: String, @ProtoNumber(7) @JvmField val srcTerm: Int = 5, @ProtoNumber(8) @JvmField val platformType: Int = 9, @ProtoNumber(9) @JvmField val innerIP: Int = 0, - @ProtoNumber(10) @JvmField val addressBook: Int = 0,//chatType == 1006为1 我觉得发0没问题 + @ProtoNumber(10) @JvmField val addressBook: Boolean = false,//chatType == 1006为true 我觉得发false没问题 @ProtoNumber(11) @JvmField val retry: Int = 0,//default @ProtoNumber(12) @JvmField val buType: Int = 1,//1或96 不确定 - @ProtoNumber(13) @JvmField val imgOriginal: Int,//是否为原图 + @ProtoNumber(13) @JvmField val imgOriginal: Boolean = false,//是否为原图 @ProtoNumber(14) @JvmField val imgWidth: Int = 0, @ProtoNumber(15) @JvmField val imgHeight: Int = 0, /** @@ -145,7 +145,7 @@ internal class Cmd0x352 : ProtoBuf { @ProtoNumber(18) @JvmField val fileIndex: ByteArray = EMPTY_BYTE_ARRAY,//default @ProtoNumber(19) @JvmField val fileStoreDays: Int = 0,//default @ProtoNumber(20) @JvmField val stepFlag: Int = 0,//default - @ProtoNumber(21) @JvmField val rejectTryFast: Int = 0,//bool + @ProtoNumber(21) @JvmField val rejectTryFast: Boolean = false,//bool @ProtoNumber(22) @JvmField val srvUpload: Int = 1,//typeHotPic[1/2/3] @ProtoNumber(23) @JvmField val transferUrl: ByteArray = EMPTY_BYTE_ARRAY//rawDownloadUrl, 如果没有就是EMPTY_BYTE_ARRAY ) : ImgReq @@ -155,7 +155,7 @@ internal class Cmd0x352 : ProtoBuf { @ProtoNumber(1) @JvmField val fileId: Long = 0L, @ProtoNumber(2) @JvmField val clientIp: Int = 0, @ProtoNumber(3) @JvmField val result: Int = 0, - @ProtoNumber(4) @JvmField val failMsg: String? = "", + @ProtoNumber(4) @JvmField val failMsg: String = "", @ProtoNumber(5) @JvmField val boolFileExit: Boolean = false, @ProtoNumber(6) @JvmField val msgImgInfo: ImgInfo? = null, @ProtoNumber(7) @JvmField val uint32UpIp: List<Int> = emptyList(), diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt index 4f6b5b62f..ee42f31dc 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt @@ -249,7 +249,7 @@ internal class CSDataHighwayHead : ProtoBuf { internal class ReqDataHighwayHead( @JvmField @ProtoNumber(1) val msgBasehead: DataHighwayHead? = null, @JvmField @ProtoNumber(2) val msgSeghead: SegHead? = null, - @JvmField @ProtoNumber(3) val reqExtendinfo: ByteArray, // = EMPTY_BYTE_ARRAY, + @JvmField @ProtoNumber(3) val reqExtendinfo: ByteArray? = null, // = EMPTY_BYTE_ARRAY, @JvmField @ProtoNumber(4) val timestamp: Long = 0L, @JvmField @ProtoNumber(5) val msgLoginSigHead: LoginSigHead? = null ) : ProtoBuf