fix(cli): 纯参数模式不再静默丢弃 --tunnel-port

build_from_args_only 用 ..Default::default() 填充其余字段,
args.tunnel_port 被丢弃,纯命令行参数模式下隧道端口设置无效。

顺带修复 vnt-ipc feature 下 main_cli.rs 的 clippy never_loop
(此前验证未覆盖该 feature):loop 两臂都直接 break,去掉 loop。

测试:test_args_only_keeps_tunnel_port 验证参数透传到 Config。
This commit is contained in:
lbl
2026-08-21 02:55:08 +08:00
parent e7b985c233
commit c5403b6e31
2 changed files with 28 additions and 9 deletions
+24
View File
@@ -295,6 +295,7 @@ fn build_from_args_only(args: Args) -> anyhow::Result<(Config, CtrlConfig)> {
mtu: args.mtu,
port_mapping: args.port_mapping,
allow_port_mapping: args.allow_mapping,
tunnel_port: args.tunnel_port,
..Default::default()
};
let ctrl_config = CtrlConfig {
@@ -475,3 +476,26 @@ server = ["quic://1.2.3.4:29872"]
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
/// 纯参数模式下 --tunnel-port 不能被静默丢弃
#[test]
fn test_args_only_keeps_tunnel_port() {
let args = Args::try_parse_from([
"vnt",
"-s",
"quic://127.0.0.1:29872",
"-n",
"test-net",
"--tunnel-port",
"12345",
])
.unwrap();
let (config, _) = build_from_args_only(args).unwrap();
assert_eq!(config.tunnel_port, Some(12345));
}
}
+4 -9
View File
@@ -143,16 +143,11 @@ async fn main0() -> anyhow::Result<()> {
}
});
}
loop {
tokio::select! {
_ = network_manager.wait_all_stopped() => {
break;
}
tokio::select! {
_ = network_manager.wait_all_stopped() => {}
_ = tokio::signal::ctrl_c() => {
log::info!("Ctrl+c received!");
break;
}
_ = tokio::signal::ctrl_c() => {
log::info!("Ctrl+c received!");
}
}
drop(task_group_guard);