diff --git a/crates/askpass/src/askpass.rs b/crates/askpass/src/askpass.rs index df4ac19a93504cca4bb3d6234da33c3474ab5bba..bcb1de5c672b1b33314b015cd740f8a055acc108 100644 --- a/crates/askpass/src/askpass.rs +++ b/crates/askpass/src/askpass.rs @@ -46,10 +46,10 @@ impl AskPassDelegate { Self { tx, _task: task } } - pub async fn ask_password(&mut self, prompt: String) -> Result { + pub async fn ask_password(&mut self, prompt: String) -> Option { let (tx, rx) = oneshot::channel(); - self.tx.send((prompt, tx)).await?; - Ok(rx.await?) + self.tx.send((prompt, tx)).await.ok()?; + rx.await.ok() } } @@ -106,12 +106,7 @@ impl AskPassSession { buffer.clear(); } let prompt = String::from_utf8_lossy(&buffer); - if let Some(password) = delegate - .ask_password(prompt.to_string()) - .await - .context("getting askpass password") - .log_err() - { + if let Some(password) = delegate.ask_password(prompt.into_owned()).await { #[cfg(target_os = "windows")] { askpass_secret.get_or_init(|| password.clone()); diff --git a/crates/project/src/git_store.rs b/crates/project/src/git_store.rs index 81a028638201bfb5e73ea8e402241bd658a2b288..793e0ed32d0ccd075e211152a3cb19137a9c05f9 100644 --- a/crates/project/src/git_store.rs +++ b/crates/project/src/git_store.rs @@ -2110,7 +2110,10 @@ impl GitStore { anyhow::bail!("no askpass found"); }; - let response = askpass.ask_password(envelope.payload.prompt).await?; + let response = askpass + .ask_password(envelope.payload.prompt) + .await + .ok_or_else(|| anyhow::anyhow!("askpass cancelled"))?; delegates .lock()