diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-05-02 14:56:26 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-05-02 14:56:26 -0400 |
commit | 9bfd14efd09cfafa0cf7d7896e663ed392c96ff7 (patch) | |
tree | 6e544b3605f1106387053d27dd09ecac79f2e96e /src/bin/rbw-agent/sock.rs | |
parent | db068a8eb136b53766bb682aa7fb73b8db53674b (diff) | |
download | rbw-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.rs | 9 |
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) + })) } } |