Files
MyGoNavi/internal
Syngnat 1128c501c3 🐛 fix(mqtt): 修复关闭连接与在途消息拉取竞争导致的进程崩溃
- pahoMQTTRuntime 增加 RWMutex 与 activeClient() 快照取用:FetchMessages 会在 4~30 秒
  等待窗口结束后才在 defer 里解引用客户端,而 Close() 原先无锁把 client 置为 nil,
  保活探测失败或用户断开连接时那次 nil 接口方法调用会崩掉整个桌面进程
- Close() 改为只置 closed 标志并断开连接,不清空在途读者会解引用的字段;并保证幂等
- FetchMessages/Publish/Ping 全程改用入口处的客户端快照,defer 中的 Unsubscribe 同样使用快照
- MQTTDB.Close() 不再把 m.runtime 置 nil,消除 QueryContext/Publish 通过 nil 检查后
  解引用的窗口;关闭后的 runtime 对所有调用返回「连接未打开」,报错口径不变
- 补 3 项回归测试:在途读者快照可用性、并发 Close 交错、Close 幂等性
2026-07-26 20:08:07 +08:00
..