diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-10-05 16:09:09 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-10-05 16:09:09 +0200 |
| commit | 20a059c960f4c65e5b895d400aa34dc9775e4ca5 (patch) | |
| tree | 1aafc373af9338917cc7aae105694b8c37457449 | |
| parent | d6a10edc854e5b63be110c52bbbb68111c31deab (diff) | |
| parent | a67a91e33f8bc44d25003b6d9d36b09eba8a3efa (diff) | |
| download | mullvadvpn-20a059c960f4c65e5b895d400aa34dc9775e4ca5.tar.xz mullvadvpn-20a059c960f4c65e5b895d400aa34dc9775e4ca5.zip | |
Merge branch 'fix-lock-warning'
| -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(); |
