diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2023-11-16 17:03:57 +0100 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2023-12-04 09:06:59 +0100 |
| commit | ad7beb86f0ea5e796de5a352309d4f798c5d7b63 (patch) | |
| tree | b2924224c1688b7e02ae8faa3d2696351624392a | |
| parent | 5a8b75effca1d8b563190021b40cc73f37302798 (diff) | |
| download | mullvadvpn-ad7beb86f0ea5e796de5a352309d4f798c5d7b63.tar.xz mullvadvpn-ad7beb86f0ea5e796de5a352309d4f798c5d7b63.zip | |
Add more error handling
| -rw-r--r-- | mullvad-daemon/src/api.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/mullvad-daemon/src/api.rs b/mullvad-daemon/src/api.rs index 9f60bab8ed..6a69beda65 100644 --- a/mullvad-daemon/src/api.rs +++ b/mullvad-daemon/src/api.rs @@ -46,6 +46,8 @@ pub enum Error { pub enum ActorError { #[error(display = "AccessModeSelector is not receiving any messages.")] SendFailed(#[error(source)] mpsc::TrySendError<Message>), + #[error(display = "AccessModeSelector is not receiving any messages.")] + OneshotSendFailed, #[error(display = "AccessModeSelector is not responding.")] NotRunning(#[error(source)] oneshot::Canceled), } @@ -154,22 +156,29 @@ impl AccessModeSelector { async fn into_future(mut self) { while let Some(cmd) = self.cmd_rx.next().await { - let _ = match cmd { + let execution = match cmd { Message::Get(tx) => self.on_get_access_method(tx), Message::Set(tx, value) => self.on_set_access_method(tx, value), Message::Next(tx) => self.on_next_connection_mode(tx), Message::Update(tx, values) => self.on_update_access_methods(tx, values), + }; + match execution { + Ok(_) => (), + Err(err) => { + log::trace!( + "AccessModeSelector is going down due to {error}", + error = err + ); + break; + } } - .map_err(|err| { - log::error!("todo(markus): Some error occured {err}"); - err - }); } } fn reply<T>(&self, tx: ResponseTx<T>, value: T) -> Result<()> { - // TODO(markus): The error probably should come from the value/tx - tx.send(Ok(value)).map_err(|_| Error::Generic) + Ok(tx + .send(Ok(value)) + .map_err(|_| ActorError::OneshotSendFailed)?) } fn on_get_access_method(&mut self, tx: ResponseTx<AccessMethodSetting>) -> Result<()> { |
