fix: 统一对话密码锁键为发送方加对方不含 IP
This commit is contained in:
@@ -778,6 +778,15 @@
|
||||
- 备选方案:等 C-03 占用 0003 后再用 0004(rebase 时改号)。
|
||||
- 影响:若 C-03 先合入并占用 0003,本文件 rebase 时改号。
|
||||
|
||||
### 复审修复 U-03
|
||||
|
||||
1. **对话密码锁键统一为发送方+对方,不含 IP**
|
||||
- 原条款:DEVELOPMENT 第 5 节按「发送方 + 对方」计数;锁定期间 unlock、**带密码的**发送和拉人进群返回 `rate_limited`。PRD F15 / D24:改密清按对方计的总数;删除后编号可复用。issue #41。
|
||||
- 实际做法:`LockTalkPair` 键为 `{Kind, 发送方, 对方}`,IP 留空。unlock / send / 进群共用该键;没带密码直接 `talk_password_required`,不计次、不因已锁改成 `rate_limited`。`UnlockTalk`/`CheckTalkPasswordForJoin` 仍保留 `remoteIP` 参数以免改接线签名。后台 `PUT talk-password` 有 Identity 时调 `SelfSetTalkPassword`(已清 `LockTalkTarget`),无 Identity 时改库后 `Clear(LockTalkTarget)`。删除端调用 `LoginLocks.ClearAllForEndpoint`。不改 group `emit`,不修 H-02。
|
||||
- 原因:原先 unlock 带 IP、send 成功清零不带 IP、群加人用空 IP,同一发送方换 IP 可再猜 10 次;没带密码也会被已锁挡成 `rate_limited`,SDK 会退避最多 1 小时。
|
||||
- 备选方案:对话密码也按编号+IP(否决,与第 5 节原文及 F15 不一致)。
|
||||
- 影响:同一对端合计 10 次错即锁;没带密码始终是 `talk_password_required`;后台改密可解除按对方暂停;删端后同编号重开不继承锁定。
|
||||
|
||||
## 后台接口 A
|
||||
|
||||
### A1 2026-09-30
|
||||
|
||||
Reference in New Issue
Block a user