diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-30 10:00:20 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-30 10:00:20 +0200 |
commit | 07e04d42496f41873dae456c9dcf5669ecffa687 (patch) | |
tree | 3083ce76eb7696c12418745c523e55a0061273f8 | |
parent | e206629dda98b7848cc556bee8ae418d8eea3cd2 (diff) |
only update dsconfig once per iteration
-rw-r--r-- | src/main.rs | 51 |
1 files changed, 17 insertions, 34 deletions
diff --git a/src/main.rs b/src/main.rs index dea45da..7ef8b33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -441,6 +441,8 @@ fn session( *ppp_state = Ppp::Auth(auth_proto.clone(), attempt + 1); } Ppp::Active => { + let mut update = false; + let mut ncps = ncp_states.lock().expect("ncp state mutex is poisoned"); for (ncp, state) in ncps.iter_mut() { if *state == Ncp::Dead { @@ -475,8 +477,6 @@ fn session( } }; } else if *state == Ncp::Active { - let mut update = false; - match *ncp { Network::Ipv4 if !ipv4_active => { ipv4_active = true; @@ -488,24 +488,7 @@ fn session( } _ => {} } - - if update { - write_dsconfig( - if ipv4_active { - config4.clone() - } else { - Arc::new(Mutex::new(Ipv4Config::default())) - }, - if ipv6_active { - config6.clone() - } else { - Arc::new(Mutex::new(Ipv6Config::default())) - }, - )?; - } } else if *state == Ncp::Failed { - let mut update = false; - match *ncp { Network::Ipv4 if ipv4_active => { ipv4_active = false; @@ -517,23 +500,23 @@ fn session( } _ => {} } - - if update { - write_dsconfig( - if ipv4_active { - config4.clone() - } else { - Arc::new(Mutex::new(Ipv4Config::default())) - }, - if ipv6_active { - config6.clone() - } else { - Arc::new(Mutex::new(Ipv6Config::default())) - }, - )?; - } } } + + if update { + write_dsconfig( + if ipv4_active { + config4.clone() + } else { + Arc::new(Mutex::new(Ipv4Config::default())) + }, + if ipv6_active { + config6.clone() + } else { + Arc::new(Mutex::new(Ipv6Config::default())) + }, + )?; + } } Ppp::Terminate(ref reason, attempt) => { if attempt >= MAX_ATTEMPTS { |