mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-08-06 04:29:52 +00:00
fix: honor empty STUN server CLI overrides
This commit is contained in:
+46
-9
@@ -1200,21 +1200,33 @@ impl NetworkOptions {
|
||||
cfg.set_udp_whitelist(old_udp_whitelist);
|
||||
|
||||
if let Some(stun_servers) = &self.stun_servers {
|
||||
let mut old_stun_servers = cfg.get_stun_servers().unwrap_or_default();
|
||||
old_stun_servers.extend(stun_servers.iter().cloned());
|
||||
cfg.set_stun_servers(Some(old_stun_servers));
|
||||
if stun_servers.is_empty() {
|
||||
cfg.set_stun_servers(Some(Vec::new()));
|
||||
} else {
|
||||
let mut old_stun_servers = cfg.get_stun_servers().unwrap_or_default();
|
||||
old_stun_servers.extend(stun_servers.iter().cloned());
|
||||
cfg.set_stun_servers(Some(old_stun_servers));
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(stun_servers_v6) = &self.stun_servers_v6 {
|
||||
let mut old_stun_servers_v6 = cfg.get_stun_servers_v6().unwrap_or_default();
|
||||
old_stun_servers_v6.extend(stun_servers_v6.iter().cloned());
|
||||
cfg.set_stun_servers_v6(Some(old_stun_servers_v6));
|
||||
if stun_servers_v6.is_empty() {
|
||||
cfg.set_stun_servers_v6(Some(Vec::new()));
|
||||
} else {
|
||||
let mut old_stun_servers_v6 = cfg.get_stun_servers_v6().unwrap_or_default();
|
||||
old_stun_servers_v6.extend(stun_servers_v6.iter().cloned());
|
||||
cfg.set_stun_servers_v6(Some(old_stun_servers_v6));
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(tcp_stun_servers) = &self.tcp_stun_servers {
|
||||
let mut old_tcp_stun_servers = cfg.get_tcp_stun_servers().unwrap_or_default();
|
||||
old_tcp_stun_servers.extend(tcp_stun_servers.iter().cloned());
|
||||
cfg.set_tcp_stun_servers(Some(old_tcp_stun_servers));
|
||||
if tcp_stun_servers.is_empty() {
|
||||
cfg.set_tcp_stun_servers(Some(Vec::new()));
|
||||
} else {
|
||||
let mut old_tcp_stun_servers = cfg.get_tcp_stun_servers().unwrap_or_default();
|
||||
old_tcp_stun_servers.extend(tcp_stun_servers.iter().cloned());
|
||||
cfg.set_tcp_stun_servers(Some(old_tcp_stun_servers));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -1789,4 +1801,29 @@ enabled = true
|
||||
assert_eq!(identity.network_secret_digest, None);
|
||||
assert_eq!(cfg.get_hostname(), "override-host");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_stun_server_options_clear_existing_config() {
|
||||
let cfg = TomlConfigLoader::new_from_str(
|
||||
r#"
|
||||
stun_servers = ["udp.example.com:3478"]
|
||||
stun_servers_v6 = ["v6.example.com:3478"]
|
||||
tcp_stun_servers = ["tcp.example.com:3478"]
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
NetworkOptions {
|
||||
stun_servers: Some(Vec::new()),
|
||||
stun_servers_v6: Some(Vec::new()),
|
||||
tcp_stun_servers: Some(Vec::new()),
|
||||
..Default::default()
|
||||
}
|
||||
.merge_into(&cfg)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(cfg.get_stun_servers(), Some(Vec::new()));
|
||||
assert_eq!(cfg.get_stun_servers_v6(), Some(Vec::new()));
|
||||
assert_eq!(cfg.get_tcp_stun_servers(), Some(Vec::new()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user