From 0a402b94a96b5db58117a5d9611a4e66986222a3 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 25 May 2020 22:12:18 -0400 Subject: improve error message for agent crashes --- src/bin/rbw/actions.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/bin/rbw/actions.rs b/src/bin/rbw/actions.rs index 8eabdd6..f9d48de 100644 --- a/src/bin/rbw/actions.rs +++ b/src/bin/rbw/actions.rs @@ -45,8 +45,7 @@ pub fn decrypt( cipherstring: &str, org_id: Option<&str>, ) -> anyhow::Result { - let mut sock = crate::sock::Sock::connect() - .context("failed to connect to rbw-agent")?; + let mut sock = connect()?; sock.send(&rbw::protocol::Request { tty: ttyname(), action: rbw::protocol::Action::Decrypt { @@ -69,8 +68,7 @@ pub fn encrypt( plaintext: &str, org_id: Option<&str>, ) -> anyhow::Result { - let mut sock = crate::sock::Sock::connect() - .context("failed to connect to rbw-agent")?; + let mut sock = connect()?; sock.send(&rbw::protocol::Request { tty: ttyname(), action: rbw::protocol::Action::Encrypt { @@ -90,8 +88,7 @@ pub fn encrypt( } pub fn version() -> anyhow::Result { - let mut sock = crate::sock::Sock::connect() - .context("failed to connect to rbw-agent")?; + let mut sock = connect()?; sock.send(&rbw::protocol::Request { tty: ttyname(), action: rbw::protocol::Action::Version, @@ -108,8 +105,7 @@ pub fn version() -> anyhow::Result { } fn simple_action(action: rbw::protocol::Action) -> anyhow::Result<()> { - let mut sock = crate::sock::Sock::connect() - .context("failed to connect to rbw-agent")?; + let mut sock = connect()?; sock.send(&rbw::protocol::Request { tty: ttyname(), @@ -126,6 +122,18 @@ fn simple_action(action: rbw::protocol::Action) -> anyhow::Result<()> { } } +fn connect() -> anyhow::Result { + crate::sock::Sock::connect().with_context(|| { + let log = rbw::dirs::agent_stderr_file(); + format!( + "failed to connect to rbw-agent \ + (this often means that the agent failed to start; \ + check {} for agent logs)", + log.display() + ) + }) +} + // TODO: it'd be great if ttyname_r was exposed via nix, so i didn't have to // manually deal with unsafe here fn ttyname() -> Option { -- cgit v1.2.3-54-g00ecf