diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2024-01-30 19:37:13 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2024-01-30 19:37:13 +0100 |
commit | 68e5ce4926409dc92b8d4d548fae0aac6d9f96c2 (patch) | |
tree | 5daa3521673d29c2070f1b2d8ed6cb7635d1c372 | |
parent | 0ee443e1c4a2140a48a51acc4dc1b837e7e4b0e2 (diff) |
fix address information being lost on clean shutdown
Address preservation is now attempted even across clean reboots. Forcing it to change now requires manual intervention. This fixes a regression introduced by clean terminations.
-rw-r--r-- | src/main.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index b5e7876..f5e91e3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,13 +33,14 @@ async fn main() -> Result<()> { .write(true) .create(true) .truncate(false) - .open(rsdsl_ip_config::LOCATION)?; + .open(rsdsl_ip_config::LOCATION_LAST)?; serde_json::from_reader(&mut ds_config_file).unwrap_or_else(|_| { println!("[info] no valid ds config to reuse"); DsConfig::default() }) }; + let mut ds_config_last = ds_config; let (v4_tx, mut v4_rx) = mpsc::unbounded_channel(); let (v6_tx, mut v6_rx) = mpsc::unbounded_channel(); @@ -64,6 +65,13 @@ async fn main() -> Result<()> { let mut ds_config_file = File::create(rsdsl_ip_config::LOCATION)?; serde_json::to_writer_pretty(&mut ds_config_file, &ds_config)?; + if ds_config.v4.is_some() { + ds_config_last.v4 = ds_config.v4; + + let mut ds_config_last_file = File::create(rsdsl_ip_config::LOCATION_LAST)?; + serde_json::to_writer_pretty(&mut ds_config_last_file, &ds_config_last)?; + } + inform(); if let Some(v4) = ds_config.v4 { @@ -78,6 +86,13 @@ async fn main() -> Result<()> { let mut ds_config_file = File::create(rsdsl_ip_config::LOCATION)?; serde_json::to_writer_pretty(&mut ds_config_file, &ds_config)?; + if ds_config.v6.is_some() { + ds_config_last.v6 = ds_config.v6; + + let mut ds_config_last_file = File::create(rsdsl_ip_config::LOCATION_LAST)?; + serde_json::to_writer_pretty(&mut ds_config_last_file, &ds_config_last)?; + } + inform(); if let Some(v6) = ds_config.v6 { |