diff options
| -rw-r--r-- | talpid-core/src/dns/linux/systemd_resolved.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/talpid-core/src/dns/linux/systemd_resolved.rs b/talpid-core/src/dns/linux/systemd_resolved.rs index a9227c2628..c47bd7ee63 100644 --- a/talpid-core/src/dns/linux/systemd_resolved.rs +++ b/talpid-core/src/dns/linux/systemd_resolved.rs @@ -81,7 +81,6 @@ impl SystemdResolved { { - let mut initial_states = self.initial_states.lock().unwrap(); for (iface_index, iface_config) in &initial_config { let initial_state = match self.dbus_interface.get_dns(*iface_index).await { Ok(state) => state, @@ -98,7 +97,12 @@ impl SystemdResolved { last_result = Err(Error::SystemdResolvedError(error)); break; } - initial_states.insert(*iface_index, initial_state); + { + self.initial_states + .lock() + .unwrap() + .insert(*iface_index, initial_state); + } } } @@ -293,8 +297,13 @@ impl SystemdResolved { let _ = join_handle.await; } - let mut initial_states = self.initial_states.lock().unwrap(); - for (iface, state) in &*initial_states { + let initial_states = { + let mut initial_states = self.initial_states.lock().unwrap(); + let states = initial_states.clone(); + initial_states.clear(); + states + }; + for (iface, state) in &initial_states { let result = if *iface == self.tunnel_index { self.dbus_interface.revert_link(state.clone()).await } else { @@ -307,7 +316,6 @@ impl SystemdResolved { ); } } - initial_states.clear(); self.current_config.lock().unwrap().clear(); |
