Change summary
crates/askpass/src/askpass.rs | 13 ++++---------
crates/project/src/git_store.rs | 5 ++++-
2 files changed, 8 insertions(+), 10 deletions(-)
Detailed changes
@@ -46,10 +46,10 @@ impl AskPassDelegate {
Self { tx, _task: task }
}
- pub async fn ask_password(&mut self, prompt: String) -> Result<EncryptedPassword> {
+ pub async fn ask_password(&mut self, prompt: String) -> Option<EncryptedPassword> {
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());
@@ -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()