07861ea04b
现象:app/Mac 后台或睡眠一段时间再打开,出现"重连过程"但 VPN 没掉。 根因:连通看门狗路径A(urltest stale)用墙上时钟算陈旧度,挂起期 stats 停更、 _lastUrltestOk 冻住;唤醒时一算 >45s 即判上游死 → _onNodeUnhealthy 触发 disconnect+connect(智能模式还自动切节点),但隧道一直好好的。 修(connection_provider.dart 一处): - _onStats 记 _lastStatsAt(任意 stats 帧时刻);stats 出现 >10s 长间断(挂起/唤醒) 时把 _lastUrltestOk 前移到现在,给节点新的 45s 窗口自证 - 看门狗路径A 增加 statsLive 闸:仅在 stats 确实在流(距今 <10s)且 urltest 停 ≥45s 时才判节点死;stats 整体停(挂起未恢复)则跳过本轮 - 加可注入时钟 _now(默认 DateTime.now),使时间驱动的 path A 可单测 测试:connection_watchdog_test 新增两例 —— ① stats 在流但 urltest 停≥45s 仍正常判死 切节点(path A 未被削弱);② 挂起 60s 唤醒不假重连(无 statsLive 闸则会误切,真回归)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>