diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-04 19:41:31 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-04 19:41:31 +0200 |
commit | 6323bb6f7007fa1cc66242ac4627f5314e337b48 (patch) | |
tree | 3b288e8e34234d0d7adbabaf9fa369a963c47ac0 | |
parent | b332d93358db4043b7f303efe5e9380c5e6f6f2c (diff) |
skip unreadable lease files instead of crashing the updater or main thread0.1.2
again, needed since the lease files can get corrupted by hard restarts and dhcp4d may not have fixed them in time
-rw-r--r-- | Cargo.lock | 6 | ||||
-rw-r--r-- | Cargo.toml | 4 | ||||
-rw-r--r-- | src/main.rs | 17 |
3 files changed, 20 insertions, 7 deletions
@@ -645,8 +645,8 @@ dependencies = [ [[package]] name = "rsdsl_dhcp4d" -version = "0.1.2" -source = "git+https://github.com/rsdsl/dhcp4d.git#88d3ed503412fb909545d7d606b312daa470c880" +version = "0.1.3" +source = "git+https://github.com/rsdsl/dhcp4d.git#8f420dacf26870b995874c34bb807bc89e589411" dependencies = [ "dhcproto", "ipnet", @@ -663,7 +663,7 @@ dependencies = [ [[package]] name = "rsdsl_dnsd" -version = "0.1.1" +version = "0.1.2" dependencies = [ "bytes", "dns-message-parser", @@ -1,6 +1,6 @@ [package] name = "rsdsl_dnsd" -version = "0.1.1" +version = "0.1.2" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -9,6 +9,6 @@ edition = "2021" bytes = "1.4.0" dns-message-parser = "0.7.0" notify = "5.1.0" -rsdsl_dhcp4d = { git = "https://github.com/rsdsl/dhcp4d.git", version = "0.1.2" } +rsdsl_dhcp4d = { git = "https://github.com/rsdsl/dhcp4d.git", version = "0.1.3" } serde_json = "1.0" thiserror = "1.0" diff --git a/src/main.rs b/src/main.rs index 40243f1..b9f449a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,8 +58,21 @@ fn read_leases(cache: Arc<RwLock<Vec<Lease>>>) -> Result<()> { }); for entry in dir { - let file = File::open(entry?.path())?; - let mut net_leases: Vec<Lease> = serde_json::from_reader(&file)?; + let entry = entry?; + + let file = File::open(entry.path())?; + let mut net_leases: Vec<Lease> = match serde_json::from_reader(&file) { + Ok(v) => v, + Err(e) => { + println!( + "[dnsd] ignore broken lease file {}: {}", + entry.path().display(), + e + ); + + continue; + } + }; leases.append(&mut net_leases); } |