Block a user
[L-02][high] accept 出一次错就永久停止接受新连接
[L-03][high] 有 MQTT 连接时停机退不出,还可能向已关闭通道发送而 panic
[L-04][high] NixMsg 直接终止 TLS 时 r.TLS 为空,后台 Cookie 不带 Secure
[L-05][medium] 后台静态页没有前端路由回退:刷新或直接打开二级页面返回 404,访问目录会列出文件
[B-11][high] 令牌"30 天没用"按最后一次认证时间算,一直在线的设备重连会被判失效
[B-12][medium] 认证没有超时与并发上限:argon2 排队无界、并发尝试可绕过锁定、PHC 参数写死
[L-01][high] 握手前阶段没有超时与并发上限:TLS 握手、CONNECT 之前、WebSocket 升级后、HTTP 空闲长连接都能无限占用资源
[B-09][high] 连接生命周期没有串行化:握手与断线交错时断开的连接被标成在线,在线判定多处来源互相不一致
[B-10][high] 密码校验与写库不是原子的:重置、停用、删除期间的登录、改密、退出会越过管理员操作
[B-05][critical] 认证失败的连接永久留在 broker 连接表,无需凭据即可耗尽内存并拖慢所有按连接查找
[B-06][medium] PublishDown 不校验目标是否仍是当前且已订阅的连接:顶号窗口内旧连接的帧发给新连接、握手前的帧推进空主题
[B-07][medium] mochi 报错日志会写出整个包:CONNECT 里的密码与会话令牌、PUBLISH 正文进入日志
[B-08][medium] broker 上行队列按编号创建后永不回收;停机时关闭通道可能 panic(为 L-03 提供 Broker.Shutdown)
[B-01][critical] 客户端 CONNECT 带 Receive Maximum 时 mochi 发送配额路径递归读锁死锁,单个客户端即可冻结全站下发
[B-02][critical] broker 大帧名额收到 PUBACK 时从不归还,累计 64 条大帧后 PublishDown 永久阻塞、messageLoops 冻结
[B-03][high] 慢客户端写阻塞时,向它发布 QoS1 会卡住调用线程,messageLoops 与其他端的处理被连带冻结
[B-04][medium] 停用/删除/重置密码/退出登录靠固定 sleep 等下行写出再断开,且有两条断开路径赛跑,fatal 与 resp 可能丢失
[总览] 2026-09-30 全量复审:问题清单、统一方案与并行修复计划
解散群时 scheduled 消息的消息级回执 state 写成 completed,违反协议枚举