@@ -1,4 +1,5 @@
1use crate::Result;
1use crate::Result;
2use jsonrpc_core as jsonrpc;
3use jsonrpc_core as jsonrpc;
3use log::{error, info};
4use log::{error, info};
4use serde::{Deserialize, Serialize};
5use serde::{Deserialize, Serialize};
@@ -90,7 +91,7 @@ impl Transport {
91 match (parts.next(), parts.next(), parts.next()) {
92 match (parts.next(), parts.next(), parts.next()) {
92 (Some("Content-Length"), Some(value), None) => {
93 (Some("Content-Length"), Some(value), None) => {
93− content_length = Some(value.parse().unwrap());
94+ content_length = Some(value.parse().context("invalid content length")?);
95 (Some(_), Some(_), None) => {}
96 (Some(_), Some(_), None) => {}
@@ -103,12 +104,12 @@ impl Transport {
106− let content_length = content_length.unwrap();
107+ let content_length = content_length.context("missing content length")?;
108 //TODO: reuse vector
109 //TODO: reuse vector
109 let mut content = vec![0; content_length];
110 let mut content = vec![0; content_length];
110 reader.read_exact(&mut content).await?;
111 reader.read_exact(&mut content).await?;
111− let msg = String::from_utf8(content).unwrap();
112+ let msg = String::from_utf8(content).context("invalid utf8 from server")?;
113 info!("<- {}", msg);
114 info!("<- {}", msg);
@@ -162,7 +163,9 @@ impl Transport {
162 match msg {
163 match msg {
163 ServerMessage::Output(output) => self.process_request_response(output).await?,
164 ServerMessage::Output(output) => self.process_request_response(output).await?,
164 ServerMessage::Call(call) => {
165 ServerMessage::Call(call) => {
165− self.client_tx.send((self.id, call)).unwrap();
167+ .send((self.id, call))
168+ .context("failed to send a message to server")?;
166 // let notification = Notification::parse(&method, params);
169 // let notification = Notification::parse(&method, params);