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,
|
mtu: args.mtu,
|
||||||
port_mapping: args.port_mapping,
|
port_mapping: args.port_mapping,
|
||||||
allow_port_mapping: args.allow_mapping,
|
allow_port_mapping: args.allow_mapping,
|
||||||
|
tunnel_port: args.tunnel_port,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
let ctrl_config = CtrlConfig {
|
let ctrl_config = CtrlConfig {
|
||||||
@@ -475,3 +476,26 @@ server = ["quic://1.2.3.4:29872"]
|
|||||||
Ok(())
|
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! {
|
||||||
tokio::select! {
|
_ = network_manager.wait_all_stopped() => {}
|
||||||
_ = network_manager.wait_all_stopped() => {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
_ = tokio::signal::ctrl_c() => {
|
_ = tokio::signal::ctrl_c() => {
|
||||||
log::info!("Ctrl+c received!");
|
log::info!("Ctrl+c received!");
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
drop(task_group_guard);
|
drop(task_group_guard);
|
||||||
|
|||||||
Reference in New Issue
Block a user