aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-05-25 22:12:18 -0400
committerJesse Luehrs <doy@tozt.net>2020-05-25 22:12:18 -0400
commit0a402b94a96b5db58117a5d9611a4e66986222a3 (patch)
tree7faef04ebba8d1126d13cb1be2a55a108e2bc45a
parentf41f8243a78aa40e737053d560060ad94a1c7b5c (diff)
downloadrbw-0a402b94a96b5db58117a5d9611a4e66986222a3.tar.gz
rbw-0a402b94a96b5db58117a5d9611a4e66986222a3.zip
improve error message for agent crashes
-rw-r--r--src/bin/rbw/actions.rs24
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> {