Skip to content

Commit 29128a4

Browse files
authored
Merge pull request #211 from Ferryx349/imp
fix: configuration parsing edge cases and startup panics
2 parents c25167f + b9e431d commit 29128a4

1 file changed

Lines changed: 33 additions & 1 deletion

File tree

ldk-server/src/util/config.rs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,13 @@ impl ConfigBuilder {
398398

399399
let poll_metrics_interval = self.poll_metrics_interval;
400400

401+
if let Some(0) = poll_metrics_interval {
402+
return Err(io::Error::new(
403+
io::ErrorKind::InvalidInput,
404+
"poll_metrics_interval must be greater than 0",
405+
));
406+
}
407+
401408
let metrics_username = self.metrics_username;
402409
let metrics_password = self.metrics_password;
403410

@@ -610,7 +617,11 @@ fn parse_dns_server_address(addr: &str) -> io::Result<SocketAddress> {
610617
if let Ok(sa) = SocketAddress::from_str(addr) {
611618
return Ok(sa);
612619
}
613-
let with_default_port = format!("{}:53", addr);
620+
let with_default_port = if addr.contains(':') && !addr.starts_with('[') {
621+
format!("[{}]:53", addr)
622+
} else {
623+
format!("{}:53", addr)
624+
};
614625
SocketAddress::from_str(&with_default_port).map_err(|e| {
615626
io::Error::new(
616627
io::ErrorKind::InvalidInput,
@@ -1757,4 +1768,25 @@ mod tests {
17571768
assert_eq!(err.kind(), io::ErrorKind::InvalidInput);
17581769
assert!(err.to_string().contains("enable_resolution_service"));
17591770
}
1771+
1772+
#[test]
1773+
fn test_parse_dns_server_address() {
1774+
assert_eq!(
1775+
parse_dns_server_address("8.8.8.8:53").unwrap(),
1776+
SocketAddress::from_str("8.8.8.8:53").unwrap()
1777+
);
1778+
assert_eq!(
1779+
parse_dns_server_address("1.1.1.1").unwrap(),
1780+
SocketAddress::from_str("1.1.1.1:53").unwrap()
1781+
);
1782+
assert_eq!(
1783+
parse_dns_server_address("[2001:db8::1]:53").unwrap(),
1784+
SocketAddress::from_str("[2001:db8::1]:53").unwrap()
1785+
);
1786+
assert_eq!(
1787+
parse_dns_server_address("2001:db8::1").unwrap(),
1788+
SocketAddress::from_str("[2001:db8::1]:53").unwrap()
1789+
);
1790+
assert!(parse_dns_server_address("invalid@address").is_err());
1791+
}
17601792
}

0 commit comments

Comments
 (0)