diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-05-25 22:12:18 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-05-25 22:12:18 -0400 |
commit | 0a402b94a96b5db58117a5d9611a4e66986222a3 (patch) | |
tree | 7faef04ebba8d1126d13cb1be2a55a108e2bc45a /src | |
parent | f41f8243a78aa40e737053d560060ad94a1c7b5c (diff) | |
download | rbw-0a402b94a96b5db58117a5d9611a4e66986222a3.tar.gz rbw-0a402b94a96b5db58117a5d9611a4e66986222a3.zip |
improve error message for agent crashes
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/rbw/actions.rs | 24 |
1 files 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<String> { - 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<String> { - 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<u32> { - 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<u32> { } 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> { + 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<String> { |