mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-10 16:53:35 +08:00
- 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 幂等性