fix: 处理撤回消息解密时的500错误

撤回消息会清空content但保留key_version,新增判断跳过此类消息解密,避免整个查询窗口被毒化
This commit is contained in:
Austin
2026-10-08 19:43:27 +08:00
parent f24133f5de
commit 8228ceb89f
2 changed files with 24 additions and 1 deletions
+3 -1
View File
@@ -196,7 +196,9 @@ func encryptMessageContent(msg *types.Message) (*types.Message, error) {
}
func decryptMessageContent(msg *types.Message) error {
if msg == nil || msg.KeyVersion <= 0 {
// 撤回消息的内容已被清空(recall 会把 head/content 置 NULL,但 content_nonce/key_version 残留),
// 此类行没有密文可解,直接放行让上层按已撤回形态下发,否则整个 get data 窗口会被单条撤回消息毒化成 500。
if msg == nil || msg.KeyVersion <= 0 || msg.Content == nil {
return nil
}
entry, err := getMessageKey(msg.TenantID, msg.KeyVersion)