Skip to content

Commit 48ea721

Browse files
committed
fix: configuration parsing edge cases and startup panics
Signed-off-by: ABHAY PANDEY <pandeyabhay967@gmail.com>
1 parent d1a0f9d commit 48ea721

4 files changed

Lines changed: 14 additions & 6 deletions

File tree

ldk-server-cli/src/types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl Amount {
6565
///
6666
/// Returns an error string if the value is not evenly divisible by 1000.
6767
pub fn to_sat(self) -> Result<u64, String> {
68-
if self.msats % 1000 != 0 {
68+
if !self.msats.is_multiple_of(1000) {
6969
Err(format!(
7070
"amount {}msats is not evenly divisible by 1000, cannot convert to whole satoshis",
7171
self.msats

ldk-server/src/api/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ pub(crate) fn decode_features(
145145
for bit_pos in 0..8u32 {
146146
if byte & (1 << bit_pos) != 0 {
147147
let bit_number = (byte_idx as u32) * 8 + bit_pos;
148-
let is_required = bit_number % 2 == 0;
148+
let is_required = bit_number.is_multiple_of(2);
149149

150150
// Create Features with just this bit set and use Display to get the name.
151151
let mut single_bit = vec![0u8; byte_idx + 1];

ldk-server/src/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ fn main() {
137137
},
138138
};
139139

140-
ldk_node_config.storage_dir_path = network_dir.to_str().unwrap().to_string();
140+
ldk_node_config.storage_dir_path = network_dir.to_string_lossy().to_string();
141141
ldk_node_config.listening_addresses = config_file.listening_addrs;
142142
ldk_node_config.announcement_addresses = config_file.announcement_addrs;
143143
ldk_node_config.network = config_file.network;
@@ -205,7 +205,7 @@ fn main() {
205205

206206
builder.set_runtime(runtime.handle().clone());
207207

208-
let seed_path = storage_dir.join("keys_seed").to_str().unwrap().to_string();
208+
let seed_path = storage_dir.join("keys_seed").to_string_lossy().to_string();
209209
let node_entropy = match NodeEntropy::from_seed_path(seed_path) {
210210
Ok(entropy) => entropy,
211211
Err(e) => {
@@ -309,7 +309,7 @@ fn main() {
309309

310310
let server_config = match get_or_generate_tls_config(
311311
config_file.tls_config,
312-
storage_dir.to_str().unwrap(),
312+
storage_dir.to_string_lossy().as_ref(),
313313
) {
314314
Ok(config) => config,
315315
Err(e) => {

ldk-server/src/util/config.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,10 @@ impl ConfigBuilder {
386386
let metrics_enabled = self.metrics_enabled.unwrap_or(false);
387387

388388
let poll_metrics_interval = self.poll_metrics_interval;
389+
390+
if let Some(0) = poll_metrics_interval {
391+
return Err(io::Error::new(io::ErrorKind::InvalidInput, "poll_metrics_interval must be greater than 0"));
392+
}
389393

390394
let metrics_username = self.metrics_username;
391395
let metrics_password = self.metrics_password;
@@ -597,7 +601,11 @@ fn parse_dns_server_address(addr: &str) -> io::Result<SocketAddress> {
597601
if let Ok(sa) = SocketAddress::from_str(addr) {
598602
return Ok(sa);
599603
}
600-
let with_default_port = format!("{}:53", addr);
604+
let with_default_port = if addr.contains(':') && !addr.starts_with('[') {
605+
format!("[{}]:53", addr)
606+
} else {
607+
format!("{}:53", addr)
608+
};
601609
SocketAddress::from_str(&with_default_port).map_err(|e| {
602610
io::Error::new(
603611
io::ErrorKind::InvalidInput,

0 commit comments

Comments
 (0)