fix: 认证失败不泄漏连接表并脱敏 mochi 整包日志
This commit is contained in:
@@ -1232,3 +1232,21 @@ issue #3 未关闭,`feat/fix-3-downlink-deadlock` 未合入 `main`。下面是
|
||||
- 原因:mochi 传给 `OnQosComplete` 的是 PUBACK,没有载荷,旧实现从未归还。
|
||||
- 备选方案:发布后立即归还(会把卡死点挪到消息包那份名额)。
|
||||
- 影响:只在 broker 保留一份全局 64 名额;确认超时仍由消息线踢线/清标记触发断线归还。
|
||||
|
||||
### 复审修复 B-05
|
||||
|
||||
- 日期:2026-09-30
|
||||
- 原条款:DEVELOPMENT 第 5 节连接表;Gitea #12。
|
||||
- 实际做法:`OnConnect` 只在认证通过时写入 `byClient`/`byConnID`;拒绝与内部错误不登记。`connState` 增加 `established` 与 `createdAt`,每分钟清扫未建立且已关闭超过 1 分钟的条目。按连接代号查找改为 O(1)。
|
||||
- 原因:mochi 在认证失败路径不调用 `OnDisconnect`,旧实现会永久泄漏。
|
||||
- 备选方案:失败路径也登记再在 Authenticate 返回 false 时删除(仍覆盖不了 CONNACK 失败)。
|
||||
- 影响:失败连接不再占用查找路径;行为对客户端不变(仍回 0x86 或不回 CONNACK)。
|
||||
|
||||
### 复审修复 B-07
|
||||
|
||||
- 日期:2026-09-30
|
||||
- 原条款:PRD §8 日志无正文、无密码、无令牌。Gitea #14。
|
||||
- 实际做法:`broker.New` 给 mochi 包一层 slog.Handler,把 `packets.Packet` / `*packets.Packet` 换成类型、QoS、包号、主题、正文长度。
|
||||
- 原因:默认 info 下第二个 CONNECT、3.1.1 发到错误主题等会把整包写入 JSON 日志。
|
||||
- 备选方案:改 mochi 日志调用点(需 fork)。
|
||||
- 影响:排障时看不到载荷与密码,只见摘要。
|
||||
|
||||
Reference in New Issue
Block a user