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:
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user