Skip to content

Commit 75153ed

Browse files
Fix mullvad-setup relying on old PrepareRestart to exist
1 parent 8066494 commit 75153ed

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

mullvad-daemon/src/management_interface.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,16 @@ impl ManagementService for ManagementServiceImpl {
101101
Ok(Response::new(UnboundedReceiverStream::new(rx)))
102102
}
103103

104-
async fn prepare_restart(&self, shutdown: Request<bool>) -> ServiceResult<()> {
104+
async fn prepare_restart(&self, _: Request<()>) -> ServiceResult<()> {
105105
log::debug!("prepare_restart");
106+
// Note: The old `PrepareRestart` behavior never shutdown the daemon.
107+
let shutdown = false;
108+
self.send_command_to_daemon(DaemonCommand::PrepareRestart(shutdown))?;
109+
Ok(Response::new(()))
110+
}
111+
112+
async fn prepare_restart_v2(&self, shutdown: Request<bool>) -> ServiceResult<()> {
113+
log::debug!("prepare_restart_v2");
106114
self.send_command_to_daemon(DaemonCommand::PrepareRestart(shutdown.into_inner()))?;
107115
Ok(Response::new(()))
108116
}

mullvad-management-interface/proto/management_interface.proto

+5-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ service ManagementService {
1717

1818
// Control the daemon and receive events
1919
rpc EventsListen(google.protobuf.Empty) returns (stream DaemonEvent) {}
20-
rpc PrepareRestart(google.protobuf.BoolValue) returns (google.protobuf.Empty) {}
20+
// DEPRECATED: Prefer PrepareRestartV2.
21+
rpc PrepareRestart(google.protobuf.Empty) returns (google.protobuf.Empty) {}
22+
// Takes a a boolean argument which says whether the daemon should stop after
23+
// it is done preparing for a restart.
24+
rpc PrepareRestartV2(google.protobuf.BoolValue) returns (google.protobuf.Empty) {}
2125
rpc FactoryReset(google.protobuf.Empty) returns (google.protobuf.Empty) {}
2226

2327
rpc GetCurrentVersion(google.protobuf.Empty) returns (google.protobuf.StringValue) {}

mullvad-management-interface/src/client.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,22 @@ impl MullvadProxyClient {
149149
}))
150150
}
151151

152-
/// TODO: Document
153-
/// - `shutdown`: TODO
154-
pub async fn prepare_restart(&mut self, shutdown: bool) -> Result<()> {
155-
self.0.prepare_restart(shutdown).await.map_err(Error::Rpc)?;
152+
/// DEPRECATED: Prefer to use `prepare_restart_v2`.
153+
pub async fn prepare_restart(&mut self) -> Result<()> {
154+
self.0.prepare_restart(()).await.map_err(Error::Rpc)?;
155+
Ok(())
156+
}
157+
158+
/// Tell the daemon to get ready for a restart by securing a user, i.e. putting firewall rules
159+
/// in place.
160+
///
161+
/// - `shutdown`: Whether the daemon should shutdown immediately after its prepare-for-restart
162+
/// routine.
163+
pub async fn prepare_restart_v2(&mut self, shutdown: bool) -> Result<()> {
164+
self.0
165+
.prepare_restart_v2(shutdown)
166+
.await
167+
.map_err(Error::Rpc)?;
156168
Ok(())
157169
}
158170

mullvad-setup/src/main.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,7 @@ async fn prepare_restart() -> Result<(), Error> {
128128
let mut rpc = MullvadProxyClient::new()
129129
.await
130130
.map_err(Error::RpcConnectionError)?;
131-
rpc.prepare_restart(false)
132-
.await
133-
.map_err(Error::DaemonRpcError)?;
131+
rpc.prepare_restart().await.map_err(Error::DaemonRpcError)?;
134132
Ok(())
135133
}
136134

0 commit comments

Comments
 (0)