aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-05-04 19:41:31 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-05-04 19:41:31 +0200
commit6323bb6f7007fa1cc66242ac4627f5314e337b48 (patch)
tree3b288e8e34234d0d7adbabaf9fa369a963c47ac0
parentb332d93358db4043b7f303efe5e9380c5e6f6f2c (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.lock6
-rw-r--r--Cargo.toml4
-rw-r--r--src/main.rs17
3 files changed, 20 insertions, 7 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 94c7f14..b6fddd2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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",
diff --git a/Cargo.toml b/Cargo.toml
index 14b9f8c..2e1976e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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);
}