summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-03 21:07:27 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-04 13:18:17 +0000
commit3e9554efb56b1db79b6f349ddf9e6c705dca6b82 (patch)
treea5a20c85a947ccc3935a159b7335882b31f265d9
parentb66a0f208ffcaac0a5603a4fa590d9445f6325eb (diff)
downloadmullvadvpn-3e9554efb56b1db79b6f349ddf9e6c705dca6b82.tar.xz
mullvadvpn-3e9554efb56b1db79b6f349ddf9e6c705dca6b82.zip
Reconnect after changing custom DNS setting
-rw-r--r--talpid-core/src/tunnel_state_machine/connected_state.rs3
-rw-r--r--talpid-core/src/tunnel_state_machine/connecting_state.rs9
2 files changed, 8 insertions, 4 deletions
diff --git a/talpid-core/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs
index b150d32481..7292da0c67 100644
--- a/talpid-core/src/tunnel_state_machine/connected_state.rs
+++ b/talpid-core/src/tunnel_state_machine/connected_state.rs
@@ -205,6 +205,9 @@ impl ConnectedState {
}
match self.set_dns(shared_values) {
+ #[cfg(target_os = "android")]
+ Ok(()) => self.disconnect(shared_values, AfterDisconnect::Reconnect(0)),
+ #[cfg(not(target_os = "android"))]
Ok(()) => SameState(self.into()),
Err(error) => {
log::error!(
diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs
index 4077f6ad5e..6e561acc6b 100644
--- a/talpid-core/src/tunnel_state_machine/connecting_state.rs
+++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs
@@ -236,10 +236,11 @@ impl ConnectingState {
}
}
Some(TunnelCommand::CustomDns(servers)) => {
- if let Err(error_cause) = shared_values.set_custom_dns(servers) {
- self.disconnect(shared_values, AfterDisconnect::Block(error_cause))
- } else {
- SameState(self.into())
+ match shared_values.set_custom_dns(servers) {
+ #[cfg(target_os = "android")]
+ Ok(true) => self.disconnect(shared_values, AfterDisconnect::Reconnect(0)),
+ Ok(_) => SameState(self.into()),
+ Err(cause) => self.disconnect(shared_values, AfterDisconnect::Block(cause)),
}
}
Some(TunnelCommand::BlockWhenDisconnected(block_when_disconnected)) => {