aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw-agent/sock.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-05-02 14:56:26 -0400
committerJesse Luehrs <doy@tozt.net>2020-05-02 14:56:26 -0400
commit9bfd14efd09cfafa0cf7d7896e663ed392c96ff7 (patch)
tree6e544b3605f1106387053d27dd09ecac79f2e96e /src/bin/rbw-agent/sock.rs
parentdb068a8eb136b53766bb682aa7fb73b8db53674b (diff)
downloadrbw-9bfd14efd09cfafa0cf7d7896e663ed392c96ff7.tar.gz
rbw-9bfd14efd09cfafa0cf7d7896e663ed392c96ff7.zip
don't kill the agent if it fails to parse a message
Diffstat (limited to 'src/bin/rbw-agent/sock.rs')
-rw-r--r--src/bin/rbw-agent/sock.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/bin/rbw-agent/sock.rs b/src/bin/rbw-agent/sock.rs
index 688f87a..bb2d6fb 100644
--- a/src/bin/rbw-agent/sock.rs
+++ b/src/bin/rbw-agent/sock.rs
@@ -26,14 +26,19 @@ impl Sock {
Ok(())
}
- pub async fn recv(&mut self) -> anyhow::Result<rbw::protocol::Request> {
+ pub async fn recv(
+ &mut self,
+ ) -> anyhow::Result<std::result::Result<rbw::protocol::Request, String>>
+ {
let Self(sock) = self;
let mut buf = tokio::io::BufStream::new(sock);
let mut line = String::new();
buf.read_line(&mut line)
.await
.context("failed to read message from socket")?;
- Ok(serde_json::from_str(&line).context("failed to parse message")?)
+ Ok(serde_json::from_str(&line).map_err(|e| {
+ format!("failed to parse message '{}': {}", line, e)
+ }))
}
}