Skip to content

Create network registration - #203

Merged
vnt-dev merged 9 commits into
mainfrom
create-network-registration
Sep 26, 2026
Merged

vnt-dev merged 9 commits into
mainfrom
create-network-registration

Conversation

@vnt-dev

@vnt-dev vnt-dev commented Sep 26, 2026

Copy link
Copy Markdown
Owner

No description provided.

- nativeStop 不再直接锁 RuntimeChangeManager:运行期监听线程在
  next_event 等待期间持有管理器锁,停止流程去锁会死锁,安卓端点
  停止后 shutdown 不返回,一直卡在“停止中”。改为经创建时登记的
  任务组句柄停机(与 vnt-web stop_running_instance 同构),监听
  线程的 wait_all_stopped 随即唤醒 next_event,退出后释放锁并
  drop 管理器,订阅连接随 Drop 断开;带 10s 超时兜底
- parse_config_from_json 增加 managed 参数:托管(订阅)模式下
  缺省 device_id 时留空串占位,不再触发 get_device_id 的落盘
  兜底。Android 上兜底路径锚定 current_exe(/system/bin)所在
  只读目录,写失败导致订阅启动报 Failed to create network:
  failed to get device_id;身份本就被首份订阅信封覆盖,无需本地
  生成
- ping_all 每节点只探评分最高的前 3 条路由。原 index > 4 判断因
  MAX_ROUTES_PER_NODE=5 永远不命中,等效于全发;备用路由不再保活,
  由 route_timeout_task 的过期阈值自然淘汰,减少持续探测开销
- flood_direct 每个对端只经其最优直连路由发送一份,不再每条路由各
  发一份。拓扑传播由接收方接力完成,备用边的发现与保活统一交由
  ping 探测上限控制;选择逻辑下沉为 RouteTable::best_direct_routes,
  direct_routes 生产路径已无调用方,转为测试观测原语
订阅链接配置的 TOML 中没有 network_code/server,点击二维码按钮会报
"组网编号不能为空"。现在检测到订阅链接时直接以链接本身生成二维码
(参考 vnts 的做法),客户端扫码即可按订阅接入;无订阅链接的普通
配置仍走原来的组网参数二维码。
选择配置下拉框旁新增预览按钮,点击后弹窗展示该配置文件的 TOML 原文,
支持一键复制;读取失败时 toast 提示并关闭弹窗。
实例卡片顶部新增编辑按钮,点击跳转到组网配置页,通过 ?edit=文件名
打开对应配置的编辑器,消费参数后立即清理 URL,避免刷新重复弹出。

ConfigEditor 加载配置的 watcher 补充 immediate:从总览页跳转时编辑器
带着 show=true 首次挂载,非 immediate 的 watcher 不会触发,导致配置
不加载、弹窗显示为空的新建表单。
replace_task_fd 的唯一调用点在 apply_mobile_change_fd 的
#[cfg(target_os = "android")] 块内(99358e1 起 iOS/tvOS 改走 restart_task),
但方法自身仍是 #[cfg(unix)],在 Linux/macOS/iOS/tvOS 上被编出来却无调用点;
又因 tun 模块是 pub(crate) mod,pub 不构成对外 API,dead_code 遂报警告。
改为 #[cfg(target_os = "android")] 与调用点对齐。

该方法本就只适用于 Android:set_network 在非 Android 平台才编译,Android 上
tun-rs 不支持 set_network_address,地址必须随新任务一并写入 DeviceState,
这也是它独立于 restart_task 的原因。

顺带修正文档:原文称新设备先验证再停旧任务、竞态时旧设备会从 Arc 重建,
与 swap_running_device 现有实现(新任务启动失败即停止、不回滚)不符。

验证:x86_64-unknown-linux-gnu 改动前复现警告,改动后 Linux / aarch64-linux-android /
Windows 宿主三目标均零警告。
@vnt-dev
vnt-dev merged commit 6bea4e5 into main Sep 26, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant